serializer.DictField不会保存到数据库

时间:2019-01-29 09:39:52

标签: django django-rest-framework serializer

我有这个模型:

class x(model.Models):
    name = models.CharField(max_length=50, unique=True)
    y = models.ManyToManyField(Y, related_name='y', db_table='x_y',
                                     blank=False,null=False)

和此序列化器:

class Serializer(DynamicFieldsModelSerializer):
   class Meta:
       model = models.x
       fields = '__all__'

当我向该模型发布数据时,我需要设置以下字段:

'name':['some name'],'y':['1','2']

这将在数据库x中使用以下行:

id |名称

1 |一些名字

和数据库x_y中的两行,其中包含:

id | x_id | y_id

1 | 1 | 1

2 | 1 | 2

问题是前端不给我发送“ name”和“ y”,而是给我发送“ name”和“ y []”,因此为了获取数据,我需要将其添加到我的序列化器类中:

y= serializers.DictField(child=serializers.IntegerField(min_value=0, max_value=2))

但是结果是x_y表中没有数据。我不知道该怎么解决

1 个答案:

答案 0 :(得分:0)

对我来说一个突出的问题是,您正在使用DictField处理整数列表。

假设整数实际上是Y模型的主键,是否尝试使用y = PrimaryKeyRelatedField(many=True)?这似乎就像你追求的那样。