django - 在 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__())
我正在尝试查看与此选择相关的问题(在管理员中查看时)。代码不起作用。这样做的正确方法是什么?
非常感谢。
解决方案
首先,您不需要在str方法中进行额外的查询。其次,字符串格式化需要一个字符串。您正在传递一个 Question 对象的str方法,也就是说,您基本上是在传递这个函数对象的引用(是的,一切都是 python 中的对象)
此代码段应该可以解决您的问题。
def __str__(self):
return 'Choice for Q: {}'.format(str(self.question.id))
推荐阅读
- reporting-services - 如何从上面的存储过程中为两个结果集创建数据集
- python - 检查列表理解中的表达式是否为空字符串
- r - 通过分组变量的第一个和最后一个值灵活过滤行
- python - 从另一个 python 文件导入函数,但使用原始文件中的定义
- javascript - 如何使用带有反应原生的打字稿将两个元素相乘?
- ios - 在 iOS 拆分视图中隐藏方向更改时的键盘
- assembly - 在 MIPS 中读取文件
- sharepoint - 如何更改视图中 Sharepoint Online 列表列标题的背景和字体颜色?
- html - 需要帮助来修复我的 CSS 动画以实现连续流动
- vb.net - VB.Net 列表框箭头更改所选项目