Невозможно присвоить "'Образец категории'": "Product.category" должен быть экземпляром "Category".
При создании новых продуктов я получаю такую ошибку. Кто-нибудь может мне помочь?
class Product(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
name_geo = models.CharField(max_length=200, null=True, blank=True)
image = models.ImageField(null=True, blank=True, default='/placeholder.png')
brand = models.CharField(max_length=200, null=True, blank=True)
category = models.ForeignKey(Category, null=False, default=0, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True)
countInStock = models.IntegerField(null=True, blank=True, default=0)
createdAt = models.DateTimeField(auto_now_add=True)
_id = models.AutoField(primary_key=True, editable=False)
def __str__(self):
return self.name_geo
class Category(models.Model):
_id = models.AutoField(primary_key=True, editable=False)
name = models.CharField(max_length=200, null=True, blank=True)
createdAt = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
@api_view(['POST'])
def createProduct(request):
user = request.user
product = Product.objects.create(
user=user,
name_geo="Sample Name",
category="Sample Category",
price=0,
brand='Sample Brand',
countInStock=0,
)
serializer = ProductSerializer(product, many=False)
return Response(serializer.data)
Без разделения класса category в models.py все работает нормально. То есть, если я не использовал ForeignKey в классе Products для категории
Это просто должен быть экземпляр категории/объект
product = Product.objects.create(
user=user,
name_geo="Sample Name",
category=Category.objects.get_or_create(name="Sample Category"),
price=0,
brand='Sample Brand',
countInStock=0,
)
Примечания:
- Вы можете просто сделать
.get()
или.filter().first()
, если не хотите создавать .
- Если вы используете форму, вы можете обойтись только PK/_id категории в POST
- вот такого типа:
f = form(request.POST)
f.is_valid()
f.save()
- вот такого типа:
- В конце это поле будет содержать PK/_id/Row# категории Obj .