модель пользователя и модель UserProfile связаны с один-к-одному полю .Я хочу отправить данные через сериализатором но программа выдает ошибку ...Джанго один-к-одному с поля модели пользователя с помощью сериалайзер
это код модели ..
class UserProfile(models.Model):
GENDERS = (
('M', 'Male'),
('F', 'Female'),
('T', 'Transgender'),
)
user = models.OneToOneField(User)
dob = models.DateField(null=True)
contactno = models.BigIntegerField(null=True)
gender = models.CharField(max_length=1, choices=GENDERS,blank=True, null=True)
country = models.ForeignKey(Country, null=True)
state = ChainedForeignKey(State,chained_field="country", chained_model_field="country", null=True)
city = ChainedForeignKey(City,chained_field="state", chained_model_field="state", null=True)
pin_code = models.IntegerField(null=True, blank=True, default = None)
class Meta:
verbose_name_plural = 'User Profile'
def __unicode__(self):
return str(self.user)
это сериализатору код ...
class userProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ("dob","contactno","country","state","city",'user')
class userSerializer(serializers.ModelSerializer):
dob = userProfileSerializer()
contactno = userProfileSerializer()
country = countrySerializer()
state = stateSerializer()
city = citySerializer()
class Meta:
model = User
fields = ('username','email','password',"dob","contactno","country","state","city")
def create(self, validated_data):
dob_data = validated_data.pop('dob')
contactno_data = validated_data.pop('contactno')
country_data = validated_data.pop('country')
state_data = validated_data.pop('state')
city_data = validated_data.pop('city')
user = User.objects.create(username=validated_data['username'],email=validated_data['email'],password=validated_data['password'])
user.set_password(validated_data['password'])
user.save()
UserProfile.objects.create(user=user,dob=dob_data,contactno=contactno_data,country=country_data,state=state_data,city=city_data)
return user
это будет очень здорово, если бы кто-нибудь мне помочь ....
Показана ошибка будет полезна. –