I have a agencies and users. I want to create User
instances via the UserSerializer
which have an agency_id
. However the serializer's validated_data
does not have the agency_id
after calling is_valid()
.
class Agency(models.Model):
name = models.CharField(max_length=60)
class User(modes.Model):
username = models.CharField(max_length=60)
agency = models.ForeignKey(Agency, blank=True, null=True)
class UserSerializer(serializers.ModelSerializer):
class Meta:
User = get_user_model()
model = User
fields = ( 'id', 'username', 'agency_id' )
read_only_fields = ['id']
Try to create a user via the serializer which belongs to the Acme Agency:
agency = Agency.objects.create(name="Acme Agency")
serializer = UserSerializer(data={ 'username':'wiley', 'agency_id': agency.id} )
serializer.is_valid() # True
serializer.validated_data.get('agency_id') # None
Creating a user via the UserManager using the agency id works just fine:
user = User.objects.create(username='wiley', agency_id=1)
user.agency.id # 1
use agency
instead of agency_id
in UserSerializer as
class UserSerializer(serializers.ModelSerializer):
class Meta:
User = get_user_model()
model = User
fields = ('id', 'username', 'agency')
read_only_fields = ['id']
and use the serailizer as,
serializer = UserSerializer(data={ 'username':'wiley', 'agency': agency.id} )
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments