ManytoMany字段中的Django ForeignKey显示为None

时间:2016-02-19 18:11:26

标签: django database sqlite python-3.x

我有一个在很多领域使用外键的模型:

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字段中选择的所有标签?

我希望我能得到一个暗示! 感谢

2 个答案:

答案 0 :(得分:7)

您需要在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

答案 1 :(得分:2)

尝试循环标记:

{% for tag in item.tags.all %}
    {{ tag }}
{% endfor %}