相关框架:Django,Django REST框架

POST 一切似乎都很好:返回 201 Created 响应,并且应该在响应正文中持久保存到数据库的JSON表示是正确的 .

实际上, FlagProduct 之间的反向关系尚未 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
}