django作者的作品

时间:2017-06-01 15:33:09

标签: 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.objects.filter(author=author)
    return render(request, 'app/authors_list.html', {'authors': authors,'publishes': publishes})

通过这种方式发布'没有定义。

2 个答案:

答案 0 :(得分:0)

问题在于,在您尝试定义publishes时未定义publishes

这是误导性的,但错误标记如下:

publishes = Group.objects.filter(publishes=publishes)
                                           ^^^^^^^^^

我希望它可以帮助您找到问题。

修改后:

publishes = Group.objects.filter(author=author)
                                        ^^^^^^

我认为您需要为@propery

定义Author

阅读this

答案 1 :(得分:0)

假设你在Group模型中有一个ForeignKey,你可以这样做,

{% for author in authors %}    
    {{ author.name }}
    {% for publish in author.group_set.all() %}
        {{ publish.title }}
    {% endfor %}
{% endfor %}

您可以使用相关名称访问作者的群组。

为此,您还可以为方便起见定义related_name。 你可以添加,

author = models.ForeignKey(Author, related_name='groups')

在您的群组模型中。

如果您已添加related_name,则可以调用related_objects,如

{% for publish in author.groups.all() %}

在你的模板中。

然后更改您的观点,

def authors_list(request):
    authors = Author.objects.all()
    return render(request, 'app/authors_list.html', {'authors': authors})