답변

93

예를 들어, 앱이 app이고 app2이고 앱에 A, B 모델이 있고 app2에 C, D 모델이 있습니다. 당신이 외래 키 만 app.A 및 app.B 및 app2.C

class TaggedItem(models.Model): 
     tag = models.SlugField() 
     limit = models.Q(app_label = 'app', model = 'a') | models.Q(app_label = 'app', model = 'b') | models.Q(app_label = 'app2', model = 'c') 
     content_type = models.ForeignKey(ContentType, limit_choices_to = limit) 
     object_id = models.PositiveIntegerField() 
     content_object = generic.GenericForeignKey('content_type', 'object_id') 

사용 limit_choices_to을보고 싶어요.

자세한 내용 및 Q 개체 인 app_label을 확인하려면 django 문서를 참조하십시오. 올바른 app_label 및 모델을 작성해야합니다. 이것은 코드 스 니펫

더하기 : 나는 당신이 app_label을 잘못 작성했다고 생각합니다. 이것은 당신을 도울 수 있습니다.

from django.contrib.contenttypes.models import ContentType 
    for c in ContentType.objects.all(): 
     print(c.app_label, c.model) 
+0

그러나 admin 인터페이스는 선택 필드로 사용하지 않는 것 같습니다. 왜 그런가요? – Geo

+0

관리자 쪽에서 확인한 결과 기본 관리자로 작동합니다. 어쩌면 거기에 약간의 오타가 있었을 것입니다. 나는 네 문제를 모른다. – mumino

+0

내 관리에서 제한을 추가 한 후 GenericForeignKey의 선택 항목 중 선택 항목이 사라집니다. 나는 단지 "---"로 남았습니다. 관리자의 선택 항목으로 스크린 샷을 게시 할 수 있습니까? – Geo