具有不同字段的Django json序列化程序
我有一个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
{“化妆品”:[“香水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发送为{“香水”:[],奶油:[]}不,应该将给定的一种“化妆品”分开