在插入行之前将行添加到另一个表

时间:2018-12-26 11:10:51

标签: python django django-models django-rest-framework django-queryset

我有一个这样的标签模型:

class Tag(models.Model):
    tag = models.CharField(max_length=100)

和类似的图像模型:

class Image(models.Model):
    image_name=models.CharField(max_length=40,unique=False)
    ...
    tags = models.ManyToManyField(Tag)

当前使用数组中标签表的主键,而不是像这样的字符串值:

{
    "image_name" : "abc.png",
    "tags" : [1, 2] 
}

但是,我希望能够使用带有多个标签的POST请求创建一个新图像,如下所示:

{
    "image_name" : "abc.png",
    "tags" : ["logo", "abc"] 
}

这样做时,我希望将徽标和abc自动插入“标签”表中。

ManyToManyField是正确的方法吗?如果可以,该如何实现?

1 个答案:

答案 0 :(得分:1)

  

默认情况下,嵌套的序列化器是只读的。如果要支持对嵌套序列化器字段的写操作,则需要创建create()和/或update()方法,以明确指定应如何保存子关系

来源:https://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers