我有一个代理商和用户。我想通过具有User
的{{1}}创建UserSerializer
实例。但是,串行器的agency_id
在调用validated_data
之后没有agency_id
。
is_valid()
尝试通过属于Acme Agency的序列化程序创建用户:
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']
使用代理商ID通过UserManager创建用户可以正常使用
: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
答案 0 :(得分:1)
使用 agency
代替 UserSerializer 中的 agency_id
作为
>
class UserSerializer(serializers.ModelSerializer):
class Meta:
User = get_user_model()
model = User
fields = ('id', 'username', 'agency')
read_only_fields = ['id']
并使用serailizer作为,
serializer = UserSerializer(data={ 'username':'wiley', 'agency': agency.id} )