Ниже показан продукт (с идентификатором 65), содержащий две категории (с идентификатором 1 и идентификатором 66), ошибка в том, что я не добавил категорию идентификатора 1 при создании продукта. Я добавил только категорию идентификатора.66 (в разделе «Сырые данные»), поэтому каждый раз, когда я добавляю новый продукт с категорией внутри, категория с идентификатором 1 автоматически добавляется в список категорий.Вот в чем ошибка!
{
"id": 65,
"product_code": "kdhjkfh",
"name": "klfjkj",
"quantity": 12,
"price": 12,
"categories": [
{
"id": 1,
"name": "ksjdf",
"products": [
65
],
"categories": [
4
]
},
{
"id": 66,
"name": "dkllj",
"products": [
65
],
"categories": []
}
]
}
часть продукта serializers.py
class ProductSerializer(serializers.ModelSerializer):
categories = CategorySerializer(many=True, required=False)
class Meta:
model = Product
fields = ('id', "product_code", "name", "quantity", "price", 'categories')
def create(self, validated_data):
category_data = validated_data.pop('categories')
product = Product.objects.create(**validated_data)
dicti={}
for items in category_data:
for key, value in items.items() :
dicti[key] = value
if 'id' in dicti:
x= product.categories.get_or_create(id = dicti['id'])
product.categories.set(x)
return product
Кто-нибудь знает, почему категория id 1 добавляется автоматически?
РЕДАКТИРОВАНИЕ
Почтовая модель
class Product(models.Model):
id = models.PositiveIntegerField(primary_key=True)
product_code = models.CharField(max_length=255)
name = models.CharField(max_length=255)
price = models.IntegerField()
quantity = models.IntegerField()
categories = models.ManyToManyField(Category, related_name='products',blank=True)
def __str__(self):
return self.name
Данные продукта, введенные в раздел необработанных данных перед выполнением запроса POST
{
"id": 65,
"product_code": "kdhjkfh",
"name": "klfjkj",
"quantity": 12,
"price": 12,
"categories": [
{
"id": 66,
"name": "dkllj",
"products": [
65
],
"categories": []
}
]
}