Serializer 및 model 사용법에 대해 (def__str__)
7920 단어 장고
· 데이터베이스 정규화 이해
· 모델 : def_str_ (self) 이해
def_str_(self)이란?
우선 결론부터 말하면,def__str__(self)により、管理画面に表示されるモデル内のデータ(レコード)を判別するための、名前(文字列)を定義することができる。
def_str_(self)가 없는 경우, 관리 화면의 표시로부터, 데이터를 판별할 수 없기 때문에, 관리가 어렵다.
models.py에서 def_str_(self) 설정 방법
models.py에서 def_str_(self)를 설정하는 방법에 대한 설명.
models.py 내에서 모델, 느낌을 정의할 수 있다면, 그 모델 내에 다음과 같이 def__str__(self)
를 추가한다.
class GooglePlace(models.Model):
info = models.JSONField(null=True, blank=True)
place_id = models.CharField(max_length=1000)
latitude = models.FloatField()
longitude = models.FloatField()
def __str__(self):
return self.info['name'] if self.info else self.place_id
여기에서는 GooglePlace 모델내에 info, place_id, latitude, longitude 필드가 설정되어 있어 def str(self)내에서는, info 필드를 돌려주도록 하고 있습니다.
info 필드가 없으면 place_id 필드를 반환하도록 설정합니다. (응용)
이 return에서 설정하는 필드 항목이 관리 화면에서 해당 데이터(레코드)를 판별할 수 있도록 표시됩니다.
관리 화면에서 표시
그렇다면 관리 화면에서 어떻게 표시되는지 살펴 보겠습니다.
우선 str(self)가 없는 경우입니다만, 이하와 같이 표시되므로, Post 모델내의 데이터를 판별할 수 없습니다.
다음으로 str(self)를 models.py에 추가한 화면입니다.
아래 화면 표시를 보면, Post 모델의 타이틀 필드가 표시되어, 어느 데이터가 무엇인지 판별이 간단해졌습니다.
이쪽이 단연 보기 쉽네요!
Serializer
Serializer에 Serializer 필드를 넣습니다.
다음으로 공부해 나가는 것은 Serializer에 관한 것입니다.
다음과 같은 Seriaizer가 있는 경우, 리시알라이징된 클래스를 다음과 같이 변수에 저장할 수 있다.
class PostImageSerializer(serializers.ModelSerializer):
class Meta:
model = PostImage
fields = ['id', 'url']
class PostSerializer(serializers.ModelSerializer):
images = PostImageSerializer(source='postimage_set', many=True)
class Meta:
model = Post
fields = ['id', 'user', 'google_place', 'type', 'permalink', 'message', 'ig_id', 'images']
소스에 정의 된 인수는 필드의 인수로 지정되며 필드에 들어가는 직렬화 된 데이터의 값에 속성을 지정할 수 있습니다.
serializers.SerializerMethodField()
다음에 serializers.SerializerMethodField()
에 대해 배워 간다
이것은 get_xxx가 되고 있는 메소드를 호출하는 필드이다.
예를 들어,
class GooglePlaceSerializer(serializers.ModelSerializer):
image = serializers.SerializerMethodField()
class Meta:
model = GooglePlace
fields = ['id', 'info', 'place_id', 'latitude', 'longitude','image']
def get_image(self, obj):
post_image = PostImage.objects.filter(post__google_place=obj).order_by('-id').first()
if not post_image:
return ''
return post_image.url
Serializer의 필드를 동적으로 결정하고 싶습니다! !
SerializerMethodField 가 있습니다만, 이것은 실제로 동적으로 작성하고 싶은 값을 정의하는 필드입니다. get_{필드 이름}으로 정의된 메서드를 호출합니다. 이들은 모두 출력 전용 속성입니다.
serializers.SerializerMethodField()
를 사용하면 메소드 결과에 따라 필드 값을 결정할 수 있습니다.
Reference
이 문제에 관하여(Serializer 및 model 사용법에 대해 (def__str__)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/1999-07-08/items/17f0b97d56325b6a0edb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
models.py에서 def_str_(self)를 설정하는 방법에 대한 설명.
models.py 내에서 모델, 느낌을 정의할 수 있다면, 그 모델 내에 다음과 같이
def__str__(self)
를 추가한다.class GooglePlace(models.Model):
info = models.JSONField(null=True, blank=True)
place_id = models.CharField(max_length=1000)
latitude = models.FloatField()
longitude = models.FloatField()
def __str__(self):
return self.info['name'] if self.info else self.place_id
여기에서는 GooglePlace 모델내에 info, place_id, latitude, longitude 필드가 설정되어 있어 def str(self)내에서는, info 필드를 돌려주도록 하고 있습니다.
info 필드가 없으면 place_id 필드를 반환하도록 설정합니다. (응용)
이 return에서 설정하는 필드 항목이 관리 화면에서 해당 데이터(레코드)를 판별할 수 있도록 표시됩니다.
관리 화면에서 표시
그렇다면 관리 화면에서 어떻게 표시되는지 살펴 보겠습니다.
우선 str(self)가 없는 경우입니다만, 이하와 같이 표시되므로, Post 모델내의 데이터를 판별할 수 없습니다.
다음으로 str(self)를 models.py에 추가한 화면입니다.
아래 화면 표시를 보면, Post 모델의 타이틀 필드가 표시되어, 어느 데이터가 무엇인지 판별이 간단해졌습니다.
이쪽이 단연 보기 쉽네요!
Serializer
Serializer에 Serializer 필드를 넣습니다.
다음으로 공부해 나가는 것은 Serializer에 관한 것입니다.
다음과 같은 Seriaizer가 있는 경우, 리시알라이징된 클래스를 다음과 같이 변수에 저장할 수 있다.
class PostImageSerializer(serializers.ModelSerializer):
class Meta:
model = PostImage
fields = ['id', 'url']
class PostSerializer(serializers.ModelSerializer):
images = PostImageSerializer(source='postimage_set', many=True)
class Meta:
model = Post
fields = ['id', 'user', 'google_place', 'type', 'permalink', 'message', 'ig_id', 'images']
소스에 정의 된 인수는 필드의 인수로 지정되며 필드에 들어가는 직렬화 된 데이터의 값에 속성을 지정할 수 있습니다.
serializers.SerializerMethodField()
다음에 serializers.SerializerMethodField()
에 대해 배워 간다
이것은 get_xxx가 되고 있는 메소드를 호출하는 필드이다.
예를 들어,
class GooglePlaceSerializer(serializers.ModelSerializer):
image = serializers.SerializerMethodField()
class Meta:
model = GooglePlace
fields = ['id', 'info', 'place_id', 'latitude', 'longitude','image']
def get_image(self, obj):
post_image = PostImage.objects.filter(post__google_place=obj).order_by('-id').first()
if not post_image:
return ''
return post_image.url
Serializer의 필드를 동적으로 결정하고 싶습니다! !
SerializerMethodField 가 있습니다만, 이것은 실제로 동적으로 작성하고 싶은 값을 정의하는 필드입니다. get_{필드 이름}으로 정의된 메서드를 호출합니다. 이들은 모두 출력 전용 속성입니다.
serializers.SerializerMethodField()
를 사용하면 메소드 결과에 따라 필드 값을 결정할 수 있습니다.
Reference
이 문제에 관하여(Serializer 및 model 사용법에 대해 (def__str__)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/1999-07-08/items/17f0b97d56325b6a0edb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Serializer에 Serializer 필드를 넣습니다.
다음으로 공부해 나가는 것은 Serializer에 관한 것입니다.
다음과 같은 Seriaizer가 있는 경우, 리시알라이징된 클래스를 다음과 같이 변수에 저장할 수 있다.
class PostImageSerializer(serializers.ModelSerializer):
class Meta:
model = PostImage
fields = ['id', 'url']
class PostSerializer(serializers.ModelSerializer):
images = PostImageSerializer(source='postimage_set', many=True)
class Meta:
model = Post
fields = ['id', 'user', 'google_place', 'type', 'permalink', 'message', 'ig_id', 'images']
소스에 정의 된 인수는 필드의 인수로 지정되며 필드에 들어가는 직렬화 된 데이터의 값에 속성을 지정할 수 있습니다.
serializers.SerializerMethodField()
다음에 serializers.SerializerMethodField()
에 대해 배워 간다
이것은 get_xxx가 되고 있는 메소드를 호출하는 필드이다.
예를 들어,
class GooglePlaceSerializer(serializers.ModelSerializer):
image = serializers.SerializerMethodField()
class Meta:
model = GooglePlace
fields = ['id', 'info', 'place_id', 'latitude', 'longitude','image']
def get_image(self, obj):
post_image = PostImage.objects.filter(post__google_place=obj).order_by('-id').first()
if not post_image:
return ''
return post_image.url
Serializer의 필드를 동적으로 결정하고 싶습니다! !
SerializerMethodField 가 있습니다만, 이것은 실제로 동적으로 작성하고 싶은 값을 정의하는 필드입니다. get_{필드 이름}으로 정의된 메서드를 호출합니다. 이들은 모두 출력 전용 속성입니다.
serializers.SerializerMethodField()
를 사용하면 메소드 결과에 따라 필드 값을 결정할 수 있습니다.
Reference
이 문제에 관하여(Serializer 및 model 사용법에 대해 (def__str__)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/1999-07-08/items/17f0b97d56325b6a0edb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class GooglePlaceSerializer(serializers.ModelSerializer):
image = serializers.SerializerMethodField()
class Meta:
model = GooglePlace
fields = ['id', 'info', 'place_id', 'latitude', 'longitude','image']
def get_image(self, obj):
post_image = PostImage.objects.filter(post__google_place=obj).order_by('-id').first()
if not post_image:
return ''
return post_image.url
Reference
이 문제에 관하여(Serializer 및 model 사용법에 대해 (def__str__)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/1999-07-08/items/17f0b97d56325b6a0edb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)