【问题标题】:Django ForeignKey in ManytoMany field is displayed as NoneManytoMany 字段中的 Django ForeignKey 显示为 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 字段中选择的所有标签?

我希望我能得到一个提示! 谢谢

【问题讨论】:

标签: django database sqlite python-3.x


【解决方案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

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2020-01-03
      • 2014-10-12
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多