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