Пытаюсь занести текущего юзера в модель Order (order.user = request.user). Получаю ошибку. Дело в том, что у меня создана кастомная модель для юзеров. Как лучше сделать?
Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x000001DE65B696D0>>": "Order.user" must be a "CustomUser" instance.
модель
class Order(models.Model):
STATUS = [
(None, 'Статусы'),
('a', 'новый'),
('b', 'в обработке'),
('с', 'согласован'),
('d', 'ожидает оплаты'),
('e', 'ожидает товар'),
('f', 'собран'),
('g', 'отправлен'),
('h', 'доставлен'),
('i', 'в ожидании оплаты'),
('k', 'оплачен'),
('l', 'отменен'),
]
first_name = models.CharField(max_length=50, verbose_name='Имя')
last_name = models.CharField(max_length=50, verbose_name='Фамилия')
email = models.EmailField(verbose_name='Эл. почта')
address = models.CharField(max_length=250, verbose_name='Адрес')
postal_code = models.CharField(max_length=20, verbose_name='Почтовый индекс')
city = models.CharField(max_length=100, verbose_name='Город')
created = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
updated = models.DateTimeField(auto_now=True, verbose_name='Дата изменения')
paid = models.BooleanField(default=False, verbose_name='Оплачен')
status = models.CharField(max_length=1, choices=STATUS, verbose_name='Статус')
coupon = models.ForeignKey(Coupon, on_delete=models.CASCADE, related_name='orders', null=True, blank=True)
discount = models.IntegerField(default=0, validators=[MinValueValidator(0), MaxValueValidator(100)])
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, related_name='orders')
product = models.ManyToManyField(Product)
кастомная модель
class CustomUser(AbstractUser):
pass
представление
def order_create(request):
cart = Cart(request)
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
order = form.save(commit=False)
order.user = request.user #здесь возникает ошибка
if cart.coupon:
order.coupon = cart.coupon
order.discount = cart.coupon.discount
order.save()
for item in cart:
OrderItem.objects.create(order=order,
product=item['product'],
price=item['price'],
quantity=item['quantity'])
print(OrderItem) # очистка корзины
cart.clear()
order_created(order.id)
# запуск асинхронной задачи
# order_created.delay(order.id)
return render(request, 'orders/order/created.html',
{'order': order})
else:
form = OrderCreateForm
return render(request, 'orders/order/create.html',
{'cart': cart, 'form': form})