Python 作者的django条目
我需要得到所有作者及其出版物的列表Python 作者的django条目,python,django,django-orm,Python,Django,Django Orm,我需要得到所有作者及其出版物的列表 {% for author in authors %} {{ author.name }} {% for publish in publishes %} {{ publish.title }} {% endfor %} {% endfor %} views.py: def authors_list(request): authors = Author.objects.all() publishes = Group.obje
{% for author in authors %}
{{ author.name }}
{% for publish in publishes %}
{{ publish.title }}
{% endfor %}
{% endfor %}
views.py:
def authors_list(request):
authors = Author.objects.all()
publishes = Group.objects.filter(author=author)
return render(request, 'app/authors_list.html', {'authors': authors,'publishes': publishes})
这种方式未定义“publishes”。问题在于,当您试图定义
publishes时,publishes
未定义
这有误导性,但错误标记如下:
publishes = Group.objects.filter(publishes=publishes)
^^^^^^^^^
我希望它能帮助你找到问题所在
编辑后:
publishes = Group.objects.filter(author=author)
^^^^^^
我认为您需要为作者定义@property
:
阅读假设您有一个ForeignKey in Group模型,您可以这样做
{% for author in authors %}
{{ author.name }}
{% for publish in author.group_set.all() %}
{{ publish.title }}
{% endfor %}
{% endfor %}
您可以使用相关名称访问作者的组
为此,为了方便起见,您还可以定义相关的_名称。
你可以加上
author = models.ForeignKey(Author, related_name='groups')
在您的组模型中
如果添加了相关的\u名称,则可以调用相关的\u对象,如
{% for publish in author.groups.all() %}
在模板中
那就改变你的看法,
def authors_list(request):
authors = Author.objects.all()
return render(request, 'app/authors_list.html', {'authors': authors})
实际上,在你使用它之前,你还没有定义它。但这不是正确的方法;你应该注意模板本身中每个作者及其“发布者”之间的关系。@DanielRoseman是对的,我只是在错误下面划线了是的,我知道。文件上说,这种方式称为pk。如果使用发布作者,则只调用一个作者。发布\uuu author='Admin'。有没有一种方法可以使用所有作者和他们的所有出版物?如果我提供的答案有任何错误,请告诉我,我将不胜感激。