具有不同字段的Django json序列化程序

具有不同字段的Django json序列化程序,json,serialization,django-models,django-rest-framework,deserialization,Json,Serialization,Django Models,Django Rest Framework,Deserialization,我有一个json {“化妆品”:[“香水1”、“香水2”、“奶油1”]},{“化妆品”:[“香水2”、“香水1”、“奶油2”、“奶油1”]} 还有一个我必须保存化妆品的模型,分为两个字段奶油和香水 我有两套香水和面霜,如下所示 PERFUME = {"prefume1", "perfume2", "scent1"} CREAM = {"cream1", "cream2"} class X(models.Model): perfume = ListTextField(base_field

我有一个json
{“化妆品”:[“香水1”、“香水2”、“奶油1”]},{“化妆品”:[“香水2”、“香水1”、“奶油2”、“奶油1”]}

还有一个我必须保存化妆品的模型,分为两个字段
奶油
香水

我有两套香水和面霜,如下所示

PERFUME = {"prefume1", "perfume2", "scent1"}
CREAM = {"cream1", "cream2"}
class X(models.Model):
    perfume = ListTextField(base_field=models.CharField(max_length=20))
    cream = ListTextField(base_field=models.CharField(max_length=20))
class X(models.Model):
    perfume = ListTextField(base_field=models.CharField(max_length=20))
    cream = ListTextField(base_field=models.CharField(max_length=20))
    cosmetics= ListTextField(base_field=models.CharField(max_length=20))
    def save(self, *args, **kwargs):
        self.perfume= list(set(self.cosmetics) & PERFUMES)
        self.vegetables = list(set(self.cosmetics) & CREAMS)
        super(X, self).save(*args, **kwargs)
我的模型如下

PERFUME = {"prefume1", "perfume2", "scent1"}
CREAM = {"cream1", "cream2"}
class X(models.Model):
    perfume = ListTextField(base_field=models.CharField(max_length=20))
    cream = ListTextField(base_field=models.CharField(max_length=20))
class X(models.Model):
    perfume = ListTextField(base_field=models.CharField(max_length=20))
    cream = ListTextField(base_field=models.CharField(max_length=20))
    cosmetics= ListTextField(base_field=models.CharField(max_length=20))
    def save(self, *args, **kwargs):
        self.perfume= list(set(self.cosmetics) & PERFUMES)
        self.vegetables = list(set(self.cosmetics) & CREAMS)
        super(X, self).save(*args, **kwargs)
我的问题是,如何编写序列化程序以将上述模型与给定的json匹配?(我想将数据从json保存到db)
提前谢谢你。

找到了。我必须编辑我的模型和序列化程序。 从序列化程序中,我排除了
香水
奶油
字段。在模型中添加了一个
化妆品
字段。 更改了模型的
save()
方法,以设置
香水
奶油

我的最终代码如下

PERFUME = {"prefume1", "perfume2", "scent1"}
CREAM = {"cream1", "cream2"}
class X(models.Model):
    perfume = ListTextField(base_field=models.CharField(max_length=20))
    cream = ListTextField(base_field=models.CharField(max_length=20))
class X(models.Model):
    perfume = ListTextField(base_field=models.CharField(max_length=20))
    cream = ListTextField(base_field=models.CharField(max_length=20))
    cosmetics= ListTextField(base_field=models.CharField(max_length=20))
    def save(self, *args, **kwargs):
        self.perfume= list(set(self.cosmetics) & PERFUMES)
        self.vegetables = list(set(self.cosmetics) & CREAMS)
        super(X, self).save(*args, **kwargs)
Serializer.py如下所示

class StringListField(serializers.ListField):  # to save a list field
   child = serializers.CharField()

class XSerializer(serializer.(serializers.ModelSerializer):
    cosmetics= StringListField()
    class Meta:
        model = X
        exclude = ("perfume", "cream")

无法将json发送为{“香水”:[],奶油:[]}不,应该将给定的一种“化妆品”分开