我试图从模型中显示一个实例(db行),其中几个实例共享多行的同一个字段(列)值。为了澄清这种说法,我有以下情况:Django Admin:显示重复实例的单个实例
ID/Title/Slug/Modified
1 Car A 1s ago
2 Car A 2s ago
3 House B 1s ago
如果上面的小桌子是我的分贝我希望我的Django管理页面,根据我的蛞蝓字段(列)显示上一次编辑的版本(显示不同行我有时间的另一列...所以上表将在管理页面显示如下:
ID/Title/Slug/Modified
1 Car A 1s ago
3 House B 1s ago
虽然第1行& 2有不同的PK的,他们具有相同的鼻涕虫,我想只是其中之一随着时间的推移...
我可以在我的views.py如下
existing_data = MyModel.objects.filter(slug=slug).latest('modified')
但那是因为我正在寻找一个蛞蝓的特定实例。如果我是不是我也可以使用GROUP_BY实现这个...
我试图在管理页面中显示此显示。我尝试了以下技术的模型管理器,
class ModelManager(models.Manager):
def get_query_set(self):
return super(ModelManager, self).get_query_set().group_by('title')
,但我得到这个错误
然后我读this part of the Django book,他们在我试图复制到模型管理器实现原始SQL我的情况如下,
class ModelManager(models.Manager):
def uniques(self):
cursor = connection.cursor()
cursor.execute("""
SELECT *
FROM eventform_event
GROUP BY slug
""")
return [row[0] for row in cursor.fetchone()]
林我的模型我有
objects = ModelManager()
我只是不知道如何让管理模型来查看我的自定义管理器不覆盖get_query_set。当我没有使用此自定义管理器覆盖get_query_set我得到这个错误
'long' object has no attribute '__getitem__'
我也试着测试“值(),values_list(),不同的()等,但他们都给予我的错误... distinct()告诉我我的数据库(mysql)不支持这个功能..现在确定如果我必须切换数据库来实现这个功能,现在我没有想法试验...任何人都知道如何实现这个功能..谢谢。
#在我的admin.py页面,我可以得到侧滤波器(list_filter)显示基于每this thread推荐slug列独特的条目...
不幸的是我不能显示在列我的模型的管理页面基于特定的列是唯一的...
谢谢凯文。我使用mysql作为我的数据库引擎。我会很感激得到这个功能实施W/MySQL的任何帮助..因为我不知道这个项目是否可以移动到PostgreSQL在这一点上... – user772401
感谢@Kevin,完美的工作!我不知道你可以把原始的SQL在Django的管理查询集 – user772401
有没有人试过在MySQL 5.7中使用它?这不适合我。可能是由于这[问题](http://stackoverflow.com/questions/40804597/error-1055-42000-expression-1-of-select-list-is-not-in-group-by-clause-t) –