我一直在尝试(失败)生成一个查询,该查询省略了模型中的结果,而不必创建第二个数据库。
pmrs.models.LootTable
class LootTable(models.Model):
boss = models.CharField(max_length=255)
itemid = models.IntegerField()
itemname = models.CharField(max_length=255)
wfflag = models.BooleanField(help_text="Set true if warforged")这就是模型的布局。我想得到的是老板字段中的所有内容的列表,然后省略重复的内容。
我尝试过各种不同的方法,.value_list,.values,order_by.().distinct等等,但是似乎没有什么效果。
使用以下内容
bosses = LootTable.objects.values('boss').distinct()返回
[{'boss': u'Thok the Bloodthirsty'}, {'boss': u'Ordos'}, {'boss': u'Paragons of the Klaxxi'}, {'boss': u'Ordos'}, {'boss': u'Spoils of Pandaria'}, {'boss': u'Spoils of Pandaria'}, {'boss': u'Galakras'}, {'boss': u'General Nazgrim'}, {'boss': u'Ordos'}, {'boss': u'Spoils of Pandaria'}, {'boss': u'Siegecrafter Blackfuse'}, '...(remaining elements truncated)...']正如您从结果中看到的那样,它正在返回重复项。
发布于 2014-01-28 16:36:22
你真的应该花时间把你的模型类的相关模式放在这个问题上。在现实中,把它浓缩成你想要做的事情似乎节省了一些时间,这就使得你很难精确地计算出你想要做的事情。
根据你所写的,
q = LootTable.objects.values('boss').distinct()应该能正常工作。如果没有,那么其他什么地方就不对劲了。
顺便说一句,老板不应该只有一张战利品桌吗?你为什么要做distinct呢?事实上,看看这个模型,如果我明白你想做什么的话(这并不能保证我会这么做!)我能发现有很多问题可能会让你心烦意乱,即:
( a)你为什么有一个LootTable表?同样的功能可以通过Boss和Item之间的多对多外键来实现。
( b)为什么LootTable上同时有item_id和item_name?为什么不把项目作为Item模型的外键呢?(即适当标准化的数据)
c)如果它只指向一个Item,它如何成为一个表?:)
https://stackoverflow.com/questions/21410175
复制相似问题