콘텐츠 유형
기본 모델은
ContentType
이며 django.contrib.contenttypes.model
에서 가져올 수 있습니다. 이는 쿼리할 수 있는 objects
일반 모델처럼 작동합니다.원하는 모델을 알고 있는 경우 앱 이름과 모델 이름을 사용하여 쿼리할 수 있습니다.
셸 명령 입력:
from django.contrib.contenttypes.models import ContentType
query_post_type = ContentType.objects.get(app_label="bloge", model="post")
query_post_type
The Output : <ContentType: bloge | post>
또한
ContentTypes
를 호출하여 설치한 모든 ContentType.objects.all()
의 목록을 얻을 수 있습니다.ContentType.objects.all()
The Output :
<QuerySet [<ContentType: admin | log entry>, <ContentType: auth | permission>, <ContentType: auth | group>, <ContentType: auth | user>, <ContentType: contenttypes | content type>, <ContentType: sessions | session>, <ContentType: bloge | post>>
ContentType
개체는 Post
모델이 아닙니다. 그러나 model_class()
메서드를 사용하여 클래스를 검색할 수 있습니다.query_post_type.model_class()
The Output : bloge.models.Post
반대로 이동하여 모델에서
ContentType
개체를 검색할 수도 있습니다. 이것은 ContentType.objects.get_for_model()
방법으로 수행됩니다.from blog.models import Post
ContentType.objects.get_for_model(Post)
The OutPut
<ContentType: bloge | post>
이는 모델 클래스의
app_label
및 model
이름을 알고자 할 때 유용합니다.ContentType
개체가 발견되면 바로 가기 메서드get_objects_for_this_type()
가 get 조회를 수행하고 해당 모델 클래스에 대한 개체를 검색합니다.query_post_type.get_object_for_this_type(pk=1)
The OutPut : <Post: An Example Post For this section >
이것은
get
관리자 인스턴스에서 Post.objects
에 대한 바로 가기입니다.query_post_type.model_class().objects.get(pk=1)
The OutPut : <Post: An Example Post>
query_post_type.get_object_for_this_type(pk=1) == query_post_type.model_class().objects.get(pk=1)
The OutPut: True
객체를 로드하는 다른 방법(예:
filter()
및 all()
)도 유사하게 사용할 수 있습니다. model_class()
를 호출하면 모델을 가져온 것과 같습니다.이것은 콘텐츠 유형을 사용하기 위해 일반적으로 알아야 하는 범위이지만 사용 가능한 추가 메서드에 대해 궁금한 경우 콘텐츠 유형 프레임워크 설명서를 읽을 수 있습니다.
이제 contenttypes 프레임워크가 모델에 동적으로 액세스할 수 있는 방법을 살펴보았습니다.
Reference
이 문제에 관하여(콘텐츠 유형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/3bdelrahman/contenttypes-22lc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)