반응형
Django의 GenericForeignKey를 모델 목록으로 제한하려면 어떻게해야합니까?
콘텐츠 유형 GenericForeignKey를 가진 모델이 미리 정의 된 목록의 모델 만 가리킬 수 있다고 django에게 알리는 방법이 있습니까? 예를 들어, A, B, C, D의 4 가지 모델과 GenericForeignKey를 보유한 모델 X가 있습니다. GenericForeignKey에 대해 A와 B 만 허용된다는 것을 X에 알릴 수 있습니까?
예를 들어 앱은 app 및 app2이고 앱에는 A, B 모델이 있고 app2에는 C, D 모델이 있습니다. 당신은 단지보고 싶어 app.A 및 app.B 및 app2.C을
from django.db import models
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')
ForeignKey에 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)
반응형
'IT박스' 카테고리의 다른 글
Android 라이브러리 프로젝트에서 애플리케이션의 컨텍스트를 가져올 수 있습니까? (0) | 2020.12.09 |
---|---|
배치 파일 : 상대 경로가있는 디렉토리의 모든 파일 나열 (0) | 2020.12.09 |
컨텍스트가없는 클래스에서 getResources ()를 호출하는 방법은 무엇입니까? (0) | 2020.12.08 |
Git이 파일을 감지하지 못하고 .gitignore에 없습니다. (0) | 2020.12.08 |
캔버스를 부모만큼 넓고 높이 만들기 (0) | 2020.12.08 |