0
Django新手,所以如果這是超級直率,我很抱歉。Django:從外鍵模型獲取不同的值
我試圖從「活動」 S對於給定的「人」的列表獲得獨特的「名稱」值的列表。
模型設置如下
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>}
我無法理清如何直去的name屬性上ActivityType
這是純醇」 SQL非常簡單,所以我知道我缺乏groking的ORM的是難辭其咎的。
感謝。
更新:我有這方面的工作,排序,但這不能以正確的方式(TM)來做到這一點..
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()來訪問...我可以獲取id,但不能獲取名稱。我只是想知道這是否是錯誤的方法。 – Gradatc