相关框架:Django,Django REST框架
在 POST
一切似乎都很好:返回 201 Created
响应,并且应该在响应正文中持久保存到数据库的JSON表示是正确的 .
实际上, Flag
和 Product
之间的反向关系尚未 Build (参见下面的相关模型,序列化器和视图), Product.flag
实际上是 None
(由DRF序列化为 null
) .
相关型号:
class Product(models.Model):
...
flag = models.OneToOneField('Flag', null=True, blank=True, related_name='product')
class Flag(models.Model):
...
reasons = ManyToManyField('FlagReason')
severity = models.CharField(...)
notes = models.TextField(...)
...
相关DRF序列化器:
class FlagSerializer(serializers.ModelSerializer):
class Meta:
model = models.Flag
fields = ('id', 'reasons', 'notes', 'created_timestamp',
'modified_timestamp', 'severity', 'product',)
相关DRF观点:
class FlagListCreate(generics.ListCreateAPIView):
queryset = Flag.objects.all()
serializer_class = FlagSerializer
filter_fields = ('severity',)
POST
请求JSON正文:
{
"product": 1328,
"severity": "mid",
"reasons": [1, 2],
"notes": "Test note",
}
201 Created
对上述POST请求的响应(注意 product
pk):
{
"id": 31,
"reasons": [
1,
2
],
"notes": "Test note",
"created_timestamp": "2018-04-30T11:54:50.762054+01:00",
"modified_timestamp": "2018-04-30T11:54:50.762084+01:00",
"severity": "mid",
"product": 1328
}
对上述标志的 GET
请求的响应(注意 product
值为 null
):
{
"id": 31,
"reasons": [
1,
2
],
"notes": "Test note",
"created_timestamp": "2018-04-30T11:54:50.762054+01:00",
"modified_timestamp": "2018-04-30T11:54:50.762084+01:00",
"severity": "mid",
"product": null
}