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'。有没有一种方法可以使用所有作者和他们的所有出版物?如果我提供的答案有任何错误,请告诉我,我将不胜感激。