我正在尝试为我的多级序列化程序编写create函数,但遇到此错误。这是我的密码-
我有型号。py
class Zorg(models.Model):
name = models.CharField(max_length=100)
owner_first_name = models.CharField(max_length=20)
owner_last_name = models.CharField(max_length=20)
zorg_email_id = models.EmailField(max_length=100)
owner_email_id = models.EmailField(max_length=100)
open_year_of_zorg = models.CharField(max_length=4)
website = models.URLField(max_length=100)
base_rating = models.IntegerField(default=2)
joined = models.DateTimeField(auto_now_add=True, blank=True, null=True)
def __str__(self):
return self.name
class Categories(models.Model):
zorg = models.ForeignKey(Zorg, on_delete=models.CASCADE, null=True, related_name='categories')
category_name = models.CharField(max_length=100)
def __str__(self):
return self.category_name + ' - ' + str(self.zorg)
class Service(models.Model):
category = models.ForeignKey(Categories, on_delete=models.CASCADE,null=True, related_name="services")
service_name = models.CharField(max_length=100)
time = models.PositiveIntegerField(default=0)
price = models.DecimalField(max_digits=10, decimal_places=2, null=False)
def __str__(self):
return self.service_name + ' in ' + str(self.category)
这是我的序列化程序.py
class ServiceSerializer(serializers.ModelSerializer):
class Meta:
model = Service
exclude = ['id', 'category']
class CategorySerializer(serializers.ModelSerializer):
services = ServiceSerializer(many=True)
class Meta:
model = Categories
fields = ['category_name', 'services']
class ZorgSerializer(serializers.ModelSerializer):
categories = CategorySerializer(many=True)
class Meta:
model = Zorg
fields = [
'id',
'name',
'owner_first_name',
'owner_last_name',
'zorg_email_id',
'owner_email_id',
'open_year_of_zorg',
'website',
'base_rating',
'categories',
]
def create(self, validated_data):
categories = validated_data.pop('categories')
zorg = Zorg.objects.create(**validated_data)
for category in categories:
Categories.objects.create(zorg=zorg, **category)
services = category.pop('services')
for service in services:
Service.objects.create(category=category, **service)
return zorg
我正在尝试为它编写.create函数,但无法为zorg序列化程序编写正确的create函数。 GET工作得很好,我得到了预期的结果,但POST和PUT是我在多层次深度方面遇到困难的地方
这就是我希望以JSON格式传递数据的方式
{
"id": 1,
"name": "Sample",
"owner_first_name": "Sample",
"owner_last_name": "Sample",
"salon_email_id": "sample@mail.com",
"owner_email_id": "samplee@mail.com",
"open_year_of_zorg": "2014",
"website": "http://sample.in",
"base_rating": 2,
"categories": [
{
"category_name": "Sample Category",
"services": [
{
"service_name": "Sample Service",
"time": 30,
"price": "300.00"
},
{
"service_name": "Sample Service",
"time": 0,
"price": "100.00"
}
]
},
{
"category_name": "Sample Category 2",
"services": [
{
"service_name": "Sample Service 2",
"time": 50,
"price": "600.00"
}
]
}
]
}
相关问题 更多 >
编程相关推荐