我被一个困扰我的Django ORM问题困住了。我有一套模型连接外键,但要求有点奇怪。我需要按他们亲戚的关系列出物品。这一点很难解释,所以我试着在下面描述一下,考虑到:
工作
授奖
AwardCategory
我需要列出工作项目,以便他们被列入奖励类别。预期产出将是:
工作实例A
工作实例A(与上面相同的实例,但由不同的award__category列出)
工作实例B
本质上,我想按奖项类别列出所有作品。我可以让这部分发挥作用,但我的解决方案是肮脏和恶心的。我想知道是否有更好的方法。我考虑过使用ManyToMany和直通属性,但我不确定是否正确地使用了它。
发布于 2012-09-13 21:35:19
根据模型的字段和关系调整以下内容:
for w in Work.objects.all():
print w
for award in w.award_set.order_by(awardcategory):
print "%s that belongs to %s" % (award,award.awardcategory)发布于 2012-09-15 15:18:09
所以我想出了一个类似的结果,但感觉还是有点脏。
categories = AwardCategory.objects.all()
work = []
for cat in categories:
work_in_cat = Work.objects.filter(awards__category=cat).distinct()
for w in work_in_cat:
work.append({
'work': w,
'category': cat,
'awards': w.awards.filter(category=cat)
})这会产生我想要的结果,但是在for循环中这样做似乎是错误的!
https://stackoverflow.com/questions/12413308
复制相似问题