Существует таблица datagen_crawlmeta с id в качестве первичного ключа.
Я хочу получить отчетливый нм из таблицы и отобразить его.
mysql> SELECT id, gid_id, nm from datagen_crawlmeta limit 10;
+----+--------+----------------------------+
| id | gid_id | nm |
+----+--------+----------------------------+
| 1 | 1 | votes |
| 2 | 1 | performance_rating |
| 3 | 1 | title |
| 4 | 1 | specs__Sound__Loudspeaker |
| 5 | 1 | specs__Sound__3.5mm jack |
| 6 | 1 | specs__Sound__Alert types |
| 7 | 1 | specs__Sound__unknown0 |
| 8 | 1 | specs__Features__Java |
| 9 | 1 | specs__Features__Messaging |
| 10 | 1 | specs__Features__Colors |
+----+--------+----------------------------+
10 rows in set (0.00 sec)
Использование следующего кода возвращает все строки.
Это потому, что self.model.objects.all().distinct('nm')
возвращает объект CrawlMeta, а не отдельный нм.
Я мог бы использовать self.model.objects.values_list('nm', flat=True).distinct()
, но это возвращает
список nm, который несовместим с возвращаемым типом набора запросов.
class CrawlMetaAdmin(admin.ModelAdmin):
list_display = ['nm']
def queryset(self, request):
query_dict = request.GET
nm = query_dict.get('nm')
return self.model.objects.all().distinct('nm')
Моя последняя цель - показать нм и счетчик в интерфейсе администратора django, используя
следующий запрос.
select nm, count(*) from datagen_crawlmeta group by nm;