从Django中的“很多”字段引用到“一个”

时间:2018-11-07 19:07:14

标签: django django-models

一个菜鸟问题。 我遵循了官方的Django教程,并且具有以下内容:

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

我尝试替换Choice。 str ()代码,如下所示:

def __str__(self):
    return 'Choice for Q: {}'.format(Question.objects.get(pk=self.question_id_id).__str__())

我正在尝试查看与此选择相关的问题(在管理员中查看时)。 该代码不起作用。正确的做法是什么?

非常感谢。

2 个答案:

答案 0 :(得分:0)

首先,您不需要在 str 方法内进行额外的查询。 其次,字符串格式需要一个字符串。您正在传递一个Question对象的 str 方法,也就是说,您基本上是在传递对该函数对象的引用(是的,所有内容都是python中的对象)

此代码段应该可以解决您的问题。

def __str__(self):
    return 'Choice for Q: {}'.format(str(self.question.id))

答案 1 :(得分:-1)

尝试一下

def __str__(self):
    return 'Choice for Q: {}'.format(self.question.__str__())