콘텐츠 유형

7036 단어 djangopython
콘텐츠 유형 프레임워크의 주요 용도는 이름을 기반으로 모델 클래스를 동적으로 로드한 다음 해당 모델에 대한 개체를 쿼리하는 것입니다.

기본 모델은 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_labelmodel 이름을 알고자 할 때 유용합니다.
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 프레임워크가 모델에 동적으로 액세스할 수 있는 방법을 살펴보았습니다.

좋은 웹페이지 즐겨찾기