Django новичок, поэтому, если это супер прямо, извиняюсь.Django: Получите отличные значения от модели внешнего ключа
Я пытаюсь получить список различных значений «Имя» из списка «Активность» для данного «Лица». Настройка
Модели ниже
class Activity(models.Model):
Visit = models.ForeignKey(Visit)
Person = models.ForeignKey(Person)
Provider = models.ForeignKey(Provider)
ActivityType = models.ForeignKey(ActivityType)
Time_Spent = models.IntegerField(blank=True, null=True)
Repetitions = models.CharField(max_length=20, blank=True, null=True)
Weight_Resistance = models.CharField(max_length=50, blank=True, null=True)
Notes = models.CharField(max_length=500, blank=True, null=True)
class ActivityType(models.Model):
Name = models.CharField(max_length=100)
Activity_Category = models.CharField(max_length=40, choices=Activity_Category_Choices)
Location_Category = models.CharField(max_length=30, blank=True, null=True, choices=Location_Category_Choices)
я могу получить список всех мероприятий, проведенных с данным лицом
person = Person.objects.get(id=person_id)
activity_list = person.activity_set.all()
получить список всех видов деятельности для этого человека, нет проблем.
То, что я не могу разобраться в том, как создать список различных/уникальных Activity_Types найдено в person.activity_set.all()
person.activity_set.values('ActivityType').distinct()
только возвращает словарь с
{'ActivityType':<activitytype.id>}
Я не могу разобраться, как получить прямой атрибут имени в ActivityType
Это довольно просто в обычном SQL-запросе, так что я знаю, что виноват мой недостаток в ORM.
Спасибо.
Update: У меня это работает, вроде, но это не может быть правильным способом (тм), чтобы сделать это ..
distinct_activities = person.activity_set.values('ActivityType').distinct()
uniquelist = []
for x in distinct_activities:
valuetofind = x['ActivityType']
activitytype = ActivityType.objects.get(id=valuetofind)
name = activitytype.Name
uniquelist.append((valuetofind, name))
А потом перебирать, что uniquelist ...
Это должно быть не так ...
от документации django https://docs.djangoproject.com/el/1.10/ref/models/querysets/#distinct –
Извините, должен был опубликовать, что я пробовал это. Проблема в том, что информация ActivityType недоступна через .distinct() ... Я могу получить идентификаторы, но не имя. Я просто подумал, не так ли? – Gradatc