在 Django REST 框架(2.1.16)中,我有一个带有可为空 FK 字段的模型type
,但 POST 创建请求给出了400 bad request
该字段是必需的。
我的模型是
class Product(Model):
barcode = models.CharField(max_length=13)
type = models.ForeignKey(ProdType, null=True, blank=True)
序列化器是:
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
exclude = ('id')
我试图type
明确添加到序列化程序中
class ProductSerializer(serializers.ModelSerializer):
type = serializers.PrimaryKeyRelatedField(null=True, source='type')
class Meta:
model = Product
exclude = ('id')
它没有效果。
从http://django-rest-framework.org/topics/release-notes.html#21x-series我看到有一个错误,但它已在 2.1.7 中修复。
我应该如何更改序列化程序以正确处理我的 FK 字段?
谢谢!
更新:从它给出的外壳
>>> serializer = ProductSerializer(data={'barcode': 'foo', 'type': None})
>>> print serializer.is_valid()
True
>>>
>>> print serializer.errors
{}
但没有类型=无:
>>> serializer = ProductSerializer(data={'barcode': 'foo'})
>>> print serializer.is_valid()
False
>>> print serializer.errors
{'type': [u'This field is required.']}
>>> serializer.fields['type']
<rest_framework.relations.PrimaryKeyRelatedField object at 0x22a6cd0>
>>> print serializer.errors
{'type': [u'This field is required.']}
在这两种情况下,它都给出
>>> serializer.fields['type'].null
True
>>> serializer.fields['type'].__dict__
{'read_only': False, ..., 'parent': <prodcomp.serializers.ProductSerializer object at 0x22a68d0>, ...'_queryset': <mptt.managers.TreeManager object at 0x21bd1d0>, 'required': True,