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检查ManyToMany字段中的对象

Django Admin 中的 ForeignKey 或 ManyToMany 字段搜索

ManytoMany 字段中的 Django ForeignKey 显示为 None

Django ManyToMany 字段上的自定义列名

Django:模型设计,ManyToMany 属性字段?