Невозможно присвоить "'Образец категории'": "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
  • .
Вернуться на верх