这是我第一次使用 Django Rest Framework,并且遇到了一个普遍问题。我尝试了许多其他 stackoverflow 解决方案和谷歌上提供的其他解决方案,但没有任何效果对我有用。
我的模特:
class Gender(models.Model):
gender = models.CharField(max_length=10)
def __str__(self):
return self.gender
class User(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
email_id = models.EmailField(max_length=100, default="")
city = models.CharField(max_length=20, blank=True)
state = models.CharField(max_length=50, blank=True)
country = models.CharField(max_length=20, blank=True)
zip_code = models.CharField(max_length=6, blank=True)
mobile_number = models.CharField(max_length=10, blank=True)
birthdate = models.DateField(blank=True, null=True)
gender = models.ForeignKey(Gender, on_delete=models.CASCADE, null=True, blank=True, related_name='user_gender')
joined = models.DateTimeField(auto_now_add=True, blank=True, null=True)
def __str__(self):
return self.first_name + ' ' + self.last_name
我希望在创建新用户时,我们仅使用性别模型中可用性别的性别
我的序列化器
class GenderSerilizer(serializers.ModelSerializer):
class Meta:
model = Gender
exclude = [
'id',
]
class UserSerializer(serializers.ModelSerializer):
gender = GenderSerilizer()
class Meta:
model = User
fields = [
'id',
'first_name',
'last_name',
'email_id',
'city',
'state',
'country',
'zip_code',
'mobile_number',
'birthdate',
'gender',
]
def create(self, validated_data):
gender_data = validated_data.pop('gender')
user = User.objects.create(**validated_data)
Gender.objects.create(user=user, **gender_data)
return user
小唯快跑啊
相关分类