【问题标题】:How to display ForeignKey Data in Django Template如何在 Django 模板中显示外键数据
【发布时间】:2020-12-21 04:32:04
【问题描述】:

我在Tags 和一个项目之间有Project 的关系可以有多个标签,但是我无法在我的模板中显示标签数据,我正在尝试根据标签 slug 显示数据。但是我遇到了错误,请告诉我如何在模板中显示标签数据。

这是我的urls.py 文件...

    path('tag/<tag_slug>', views.projecttag, name='projecttag'),

这是我的 `models.py 文件...

class Tags(models.Model):
    project = models.ForeignKey(Project, null=True, blank=True, related_name='ProjectTags', on_delete=models.CASCADE)
    tag_name = models.CharField(max_length=64, null=True, blank=True)
    tag_slug = models.SlugField(max_length=64, null=True, blank=True)

这是我的views.py 文件...

def projecttag(request, tag_slug):
    tag = get_object_or_404(Tags, tag_slug=tag_slug)
    project = Project.objects.filter(ProjectTags=tag)
    context = {'tag':tag, 'project':project}
    template_name = 'pages/tags.html'
    return render(request, template_name, context)

这是我的tags.html 文件...

{% for property in project %}
    <div class="single-property-box">
        {{property.name}}
    </div>
{% endfor %

【问题讨论】:

  • 请添加错误信息。

标签: python django django-models django-views django-templates


【解决方案1】:

根据我的理解,您希望显示与您的“project”类相关的标签。正如您所解释的,一个项目可以有多个标签,因此您的“Project”类中的“ProjectTags”字段必须是多值的。但是当您在projecttag 视图中过滤项目时,您只是在检查ProjectTags=tag。这里tag 是一个对象。因此,您应该检查ProjectTags__in=tag。

如果您已经在 Project 类中将 Tags 类声明为 ManyToManyRelation,则无需在标签类中创建 外键 约束。由于您没有上传项目类,所以我不知道您如何将 tags 类与它相关联。

【讨论】:

    猜你喜欢
    • 2016-09-14
    • 2011-04-27
    • 2017-12-17
    • 1970-01-01
    • 2021-04-01
    • 2020-11-28
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多