ManytoMany 字段中的 Django ForeignKey 显示为 None
Posted
技术标签:
【中文标题】ManytoMany 字段中的 Django ForeignKey 显示为 None【英文标题】:Django ForeignKey in ManytoMany field is displayed as None 【发布时间】:2016-06-01 10:09:21 【问题描述】:我有一个在多对多字段中使用外键的模型:
class DefinitionTag(models.Model):
tag = models.CharField(max_length=50, default="Tag")
def __str__(self):
return self.tag
class Definition(models.Model):
name = models.CharField(max_length=100)
definition = models.CharField(max_length=1000)
fundstellen = models.CharField(max_length=300, blank=True)
wissenswertes = models.CharField(max_length=1000, blank=True)
tags = models.ManyToManyField(DefinitionTag)
def __str__(self):
return self.name
这行得通,并且在管理员中所有内容都已设置好,因此我可以使用它。问题是,如果我尝试使用代码在视图中显示包含数据库条目的表:
def home(request):
query_results = Definition.objects.all()
context =
"query_results": query_results
return render(request, 'home.html', context)
在 html 中:
% for item in query_results %
<tr>
<td> item.name </td>
<td> item.definition </td>
<td> item.fundstellen </td>
<td> item.wissenswertes </td>
<td> item.tags </td>
</tr>
% endfor %
在标签栏中,它只给了我:
DefinitionTag.None
如何显示在 manytomany 字段中选择的所有标签?
我希望我能得到一个提示! 谢谢
【问题讨论】:
看看that answer。你需要遍历item.tags.all
。
【参考方案1】:
尝试遍历标签:
% for tag in item.tags.all %
tag
% endfor %
【讨论】:
【参考方案2】:您需要在 m2m 字段上循环以获取所有标签。仅引用它不会为您提供链接到它的单个标签:
% for item in query_results %
<tr>
<td> item.name </td>
<td> item.definition </td>
<td> item.fundstellen </td>
<td> item.wissenswertes </td>
<td>
% for tag in item.tags.all %
tag
% endfor %
</td>
</tr>
% endfor %
如果您不确定如何从 m2m 字段中获取所有项目,请查看django doc。
【讨论】:
以上是关于ManytoMany 字段中的 Django ForeignKey 显示为 None的主要内容,如果未能解决你的问题,请参考以下文章
Django 1.4 - ManyToMany 字段看起来像用户身份验证中的用户权限字段
Django Admin 中的 ForeignKey 或 ManyToMany 字段搜索