Le modèle de l'utilisateur et le modèle UserProfile sont reliés à un à un champ .Je souhaite publier des données par le biais de sérialiseur mais le programme donne l'erreur ...django un à un champs avec le modèle de l'utilisateur avec l'aide sérialiseur
ce code est modèle ..
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)
ce code est sérialiseur ...
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
il sera très bien si quelqu'un me aider ....
Affichage de l'erreur serait utile. –