Django中使用ForeignKey参数的get_absolute_url不工作

0 投票
1 回答
1623 浏览
提问于 2025-04-16 15:53

我正在使用get_absolute_url这个方法来获取动态查询的链接,但是当链接显示出来时,它只显示了第一个参数,而没有显示第二个参数。这个问题只发生在我把模型的ForeignKey作为第一个参数的时候。下面是代码。

class Topic(models.Model):
topic_id = models.AutoField(primary_key=True)
forum_id = models.ForeignKey(Forum)
topic_title = models.CharField(max_length=400)
topic_date_time = models.DateTimeField(auto_now_add=True)
topic_user_id = models.IntegerField()
topic_views = models.IntegerField(default=0)
topic_replies = models.IntegerField(default=0)
topic_is_locked = models.BooleanField(default=False)
topic_is_sticky = models.BooleanField(default=False)

def __unicode__(self):
    return '%s' % _(u'self.topic_title')

def get_absolute_url(self):
    **return '/forums/%i/%i/' % (self.forum_id, self.topic_id)**

我该怎么解决这个问题呢?谢谢!

1 个回答

1
def get_absolute_url(self):
    return '/forums/%s/%s/' % (str(self.forum_id.pk), self.topic_id)

编辑:jerzyk 的评论提到了以下几点:

  1. 使用 @permalink 和 get_absolute_url,然后通过视图和参数反向生成网址,这样你就不需要把网址写死在代码里。

  2. 使用 _id 而不是 .pk

    def get_absolute_url(self):
        return '/forums/%s/%s/' % (self.forum_id_id, self.topic_id)
    

撰写回答