Django - 通过带有外键引用的序列化程序创建实例
Django - Creating an instance via the serializer with a foreign key reference
我有代理商和用户。我想通过具有 agency_id
的 UserSerializer
创建 User
个实例。但是序列化器的 validated_data
在调用 is_valid()
.
后没有 agency_id
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']
尝试通过属于 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
使用代理商 ID 通过 UserManager 创建用户效果很好:
user = User.objects.create(username='wiley', agency_id=1)
user.agency.id # 1
在 UserSerializer 中使用 agency
而不是 agency_id
作为
class UserSerializer(serializers.ModelSerializer):
class Meta:
User = get_user_model()
model = User
fields = ('id', 'username', <b>'agency')</b>
read_only_fields = ['id']
并将序列化器用作,
serializer = UserSerializer(data={ 'username':'wiley', <b>'agency': agency.id}</b> )
我有代理商和用户。我想通过具有 agency_id
的 UserSerializer
创建 User
个实例。但是序列化器的 validated_data
在调用 is_valid()
.
agency_id
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']
尝试通过属于 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
使用代理商 ID 通过 UserManager 创建用户效果很好:
user = User.objects.create(username='wiley', agency_id=1)
user.agency.id # 1
在 UserSerializer 中使用 agency
而不是 agency_id
作为
class UserSerializer(serializers.ModelSerializer):
class Meta:
User = get_user_model()
model = User
fields = ('id', 'username', <b>'agency')</b>
read_only_fields = ['id']
并将序列化器用作,
serializer = UserSerializer(data={ 'username':'wiley', <b>'agency': agency.id}</b> )