728x90

외부키 사용
여기에서는 외래키를 사용되면 id 값이 나온다.
만약 다른 값을 원한다.
class UserSerializers2(serializers.ModelSerializer):
User= serializers.StringRelatedField()
class Meta:
model = User
fields = ['id', 'User', 'email', 'password']
depth = 1
만약 User가 외래키라면 외와 같이 지정할 수 있으며
class User(models.Model):
"""
사용자
"""
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=16)
email = models.EmailField()
password = models.CharField(max_length=65)
def __str__(self):
return self.name
def __int__(self):
return self.id
이중 str 이 출력된다.
이것을 응용하여
class UserSerializers(serializers.Serializer):
"""
user
"""
id = serializers.IntegerField(read_only=True)
name = serializers.CharField()
email = serializers.EmailField()
password = serializers.CharField()
def create(self, validated_data):
return User.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.email = validated_data.get('email', instance.email)
instance.password = validated_data.get('password', instance.password)
instance.save()
return instance
class UserSerializers2(serializers.ModelSerializer):
name = UserSerializers(read_only=True)
class Meta:
model = User
fields = ['id', 'name', 'email', 'password']
depth = 1
위의 serializer의 출력도 할수 있다.
여기에서는 read_only와 many 를 사용할 수 있다.
이와 비슷한 것으로 PrimaryKeyRelatedField 이란 것도 있는데
이것을 대상의 기본키를 출력한다.
더 큰 것으로
HyperlinkedRelatedField() 이란 것이 있는데 이것은 연결된 필드를 url으로 연결한다.
외래키 저장
출력되는 것을 바탕으로 저장하면 된다.
728x90
'SERVER > Django' 카테고리의 다른 글
| django Model (0) | 2023.06.12 |
|---|---|
| Django Serializer 자동 모델 생성 ( ModelSerializer(1) ) (0) | 2023.06.12 |
| Django Serializer 직접 입력으로 구성하는 방법( Serializer ) (0) | 2023.06.12 |
| USER 커스텀 모델(AbstractUser , AbstractBaseUser) (0) | 2023.06.12 |
| Django USER 속성 종류 (0) | 2023.06.12 |