我有以下型号
class Article(models.Model):
url = models.URLField(max_length=200, unique=True, null=False)
title = models.CharField(max_length=200, unique=False, null=False)
def distinct_attrs(self):
pks = self.child_set.all().values_list('fields__pk', flat=True)
distinct_attrs = ChildReferences.objects.filter(pk__in=pks).distinct()
return distinct_attrs
现在我想迭代article_list来获取文章子模型中字段的不同值。因此我定义了distinct_attrs方法。但是,它只能如下工作:
{% for article in article_list %}
{% for field in article.distinct_attrs %}
{{ field.value }}
但是,这为每篇文章提供了不同的值,但是对于整个文章列表。我需要做的是:
{% for field in article_list.distinct_attrs %}
{{ field.value }}
事实上,我想从article_list中获取ChildReferences中字段的唯一值列表
答案 0 :(得分:1)
我得到了这个工作。我完全删除了distinct_attrs方法,并修改了我的泛型类视图:
class MyView(generic.ListView):
template_name = '***'
context_object_name = 'article_list'
def get_queryset(self):
return Article.objects.filter(***)
def get_context_data(self, **kwargs):
context = super(MyView, self).get_context_data(**kwargs)
context['distinct_attrs'] = ChildReferencing.objects.filter(***).distinct()
return context
所以现在我只需在我的模板上执行以下操作:
{% for attr in distinct_attrs %}
{{ attr.value }}
{% endfor %}