在Django标签中为“ ForeignKey”使用“ for”循环

时间:2018-11-19 22:13:39

标签: python django tags

我的django循环在模板中无法正常工作。为什么因为我的缘故,一切看起来都很好? 任何帮助将不胜感激。

我的模型。py

class Tags(models.Model):
    name = models.CharField(max_length=10)

class Person(models.Model):
    keywords = models.ForeignKey(Tags, on_delete=models.CASCADE)

我的views.py

def person_detail(request, user_id):
    person = get_object_or_404(Person, pk=user_id)
    context = {'person': person}
    return render(request, 'person_detail.html', context)

我的templates.html

{% for tag in person.tags %}
<span class="badge badge-lg badge-pill badge-info"># {{ person.tags.name } </span>
{% endfor %}

即使数据库中有数据,也不会产生任何结果。

1 个答案:

答案 0 :(得分:2)

您正在倒退。您的Tags模型应该具有Person的外键,而不是相反。例如:

class Person(models.Model):
    ...

class Tag(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    name = models.CharField(max_length=10)

请注意,我也将您的Tags模型重命名为Tag,因为将模型命名为单数是有意义的。

然后您可以编写以下内容:

{% for tag in person.tag_set.all %}
    ...
{% endfor %}