Я немного запутался, как Django обрабатывает свойство _id, когда мы используем ORM с некоторыми моделями, которые используют внешний ключ. Например:
class CartItem(models.Model):
user = models.ForeignKey('accounts.CustomUser', related_name='carts', on_delete=models.CASCADE, verbose_name='User')
product = models.ForeignKey('pizza.Product', related_name='carts', on_delete=models.CASCADE, verbose_name=_('Product'))
quantity = models.SmallIntegerField(verbose_name=_('Quantity'))
И когда я использую ORM с «фильтром», я могу легко использовать что-то вроде:
CartItem.objects.filter(user=1, product=1, quantity=1)
И Django вроде «видеть», что я имею в виду «id»', но когда я использую точно такую же строку кода, но с' create 'вместо' filter ':
CartItem.objects.create(user=1, product=1, quantity=1)
Затем выдается сообщение об ошибке:
Cannotназначьте «1»: «CartItem.user» должен быть экземпляром «CustomUser».
И для его создания мне нужно использовать:
CartItem.objects.create(user_id=1, product_id=1, quantity=1)
Почему это так? Есть ли здесь какое-то правило, которое я не понимаю?