여러 인스턴스가 여러 행에 대해 동일한 필드 (열) 값을 공유하는 모델에서 단일 인스턴스 (db 행)를 표시하려고합니다. 그 문을 명확히하기 위해, 나는 다음과 같은 상황이 있습니다Django Admin : 중복 인스턴스의 단일 인스턴스 표시
ID/Title/Slug/Modified
1 Car A 1s ago
2 Car A 2s ago
3 House B 1s ago
위의 작은 테이블 내 DB를 내 장고 관리자 페이지 내 슬러그 필드 (열) (마지막 편집 된 버전을 표시에 따라 별개의 행을 표시하려면한다면 나는 시간에 대한 또 다른 열이 ... 그래서 다음과 같이 위의 표는 관리자 페이지에 표시합니다 : 행 1 & 2는 같은 슬러그가 다른 PK의의를 가지고 있지만
이ID/Title/Slug/Modified
1 Car A 1s ago
3 House B 1s ago
, 나는 그들 중 하나 싶어 나중 시간은 ...
existing_data = MyModel.objects.filter(slug=slug).latest('modified')
을 다음하지만 슬러그의 특정 인스턴스를 찾고 있어요 때문에 내가 또한 GROUP_BY를 사용할 수 아니었다면 그 .. 것에 따라 나는 ...
내 views.py에이를 수 (3210)관리자 페이지에서이 표시를 얻으려고합니다. 나는 모델 관리자에서 다음 방법을 시도했습니다,
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을 읽고 있던이 오류 다음
'QuerySet' object has no attribute 'group_by'
을 얻고 그들은 내가에 복사 시도 모델 관리자에서 원시 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()]
임 내 모델 나는
가admin 모델에서 get_query_set을 덮어 쓰지 않는 내 사용자 정의 관리자를 보는 방법을 모르겠습니다. 나는 get_query_set을 재정의이 사용자 정의 관리자를 사용 않았다 때 나는이 오류를 얻을
'long' object has no attribute '__getitem__'
나는 또한 테스트의 가치를 시도했습니다(), values_list() 등) (별개하지만 그들은 모두 나에게 오류를 줄 ... distinct()는 내 데이터베이스 (mysql)가이 기능을 지원하지 않는다고 알려줍니다. 이제는이 기능을 구현하기 위해 데이터베이스를 전환해야하고 지금은 실험 할 아이디어가 없습니다. 이 기능 .. 고마워.
불행하게도 나는 행에 표시되지 않을 수 있습니다 내가 this thread 추천 당 슬러그 열을 기반으로 고유의 항목을 보여 측 필터 (list_filter)를 얻을 수 있습니다 내 admin.py 페이지에서 #... 내 모델의 관리 페이지가 특정 열을 기반으로 고유하게 ...
감사합니다. 내 데이터베이스 엔진으로 MySQL을 사용하고 있습니다. 이 프로젝트가이 시점에서 PostgreSQL로 옮길 수 있는지 알 수 없기 때문에 나는이 기능을 w/mysql으로 구현하는 데 도움을 주시면 감사하겠습니다 ... – user772401
완벽하게 작동 한 @Kevin에게 감사드립니다! 난 당신이 장고 관리 쿼리 세트에 raw SQL을 넣을 수 있는지 몰랐다 – user772401
누구도 MySQL 5.7에서 사용하려고 했습니까? 그것은 나를 위해 작동하지 않습니다. 아마도이 [문제] (http://stackoverflow.com/questions/40804597/error-1055-42000-expression-1-of-select-list-is-not-in-group-by-clause-t)로 인해, –