2015-06-05 5 views
0

У меня есть модель:Джанго получить определенное значение от 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 или организации с ее идентификатором в шаблоне, так что я могу перенаправить его на какой-то странице с идентификатором, как

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

first_parent я получаю должен быть уникальным ,

Как это получить. пожалуйста, помогите

ответ

0

Для внутреннего интерфейса, которые не поддерживают distinct('...') как MySQL, используйте Organisation.objects.values('first_parent').distinct(), это дает вам список {'first_parent': value} словарей

Чтобы получить список только значения делают

parent_list = [org['first_parent'] for org in Organisation.objects.values('first_parent').distinct()] 
Смежные вопросы