django从queryset中获取不同的值

时间:2015-06-05 08:21:23

标签: python django django-queryset

我有一个模特:

class Organisation(User):
    organisation_name = models.CharField(max_length=200)
    first_parent = models.ForeignKey('Parent', related_name="first", blank=True, null=True)
    second_parent = models.ForeignKey('Parent', related_name="second", blank=True, null=True)



    def __unicode__(self):
        return self.username

和我的父模型:

class Parent(models.Model):
    parent_name = models.CharField(max_length=50)

    def __unicode__(self):
        return self.parent_name

在这里,我希望模板中的父母列表是唯一的。我不想要被重复的父母。

我经历过:

organisations = Organisation.objects.all().distinct('first_parent')

但是mysql不支持。

我试图从组织中获取第一个父母的列表,然后它的集合仅提供如下的唯一值:

organisations = Organisation.objects.all()
parent_list = organisations.first_parent ## it gives error says 'QuerySet' object has no attribute 'first_parent'

我已经考虑过在模板中进行分组,但我无法...

我想要的是first_parent或组织的列表,其ID在模板中,以便我可以将其重定向到ID为

的ID页面
{% for parent in parent_list %}
    {{parent}}
    <a href="{% url "some_url" parent.id %}"

first_parent我得到的应该是唯一的。

我怎样才能得到这个。请帮忙

1 个答案:

答案 0 :(得分:0)

对于不支持MySQL distinct('...')的后端,请使用Organisation.objects.values('first_parent').distinct(), 这会为您提供{'first_parent': value}词典

的列表

获取值的列表

parent_list = [org['first_parent'] for org in Organisation.objects.values('first_parent').distinct()]