Django-通过带有外键引用的序列化器创建实例

时间:2018-08-10 15:01:44

标签: django django-serializer

我有一个代理商和用户。我想通过具有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

1 个答案:

答案 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} )