首页 > 解决方案 > 在 Django 中从“多”字段到“一”

问题描述

一个菜鸟问题。我遵循了官方的 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

我已经尝试替换选择。str () 代码如下:

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

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

非常感谢。

标签: djangodjango-models

解决方案


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

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

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

推荐阅读