Django электронной коммерции Wishlists список меню в выпадающем меню на странице продукта в настоящее время вошел пользователь, чтобы выбрать из добавить продукт в не работает
Я пытаюсь добиться того, чтобы дать возможность пользователю, вошедшему в систему в данный момент, добавить товар в определенный список желаний, который он составил ранее. Для этого я хочу, чтобы была кнопка выпадающего меню со списком всех текущих списков желаний пользователя с чекбоксом.
Я попытался сделать queryset на поле формы, но он не позволяет мне фильтровать текущего вошедшего пользователя, он дает мне ошибку "запросы не определены".
Не работает, потому что я считаю, что вы не можете использовать фильтр для фильтрации пользователей с помощью ModelForm.
Какой есть другой способ сделать это?
модель
class Wishlist(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=50, null=True,blank=True)
slug = models.SlugField(max_length=50, null=True,blank=True)
wishlist_cover_image = models.ImageField(upload_to='media/WISHLIST_COVER_IMAGES/', null=True,blank=True)
description = RichTextField(max_length=500, null=True,blank=True)
products = models.ManyToManyField(Product, null=True,blank=True)
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now_add=False ,null=True,blank=True)
def get_absolute_url(self):
return reverse('ecommerce:wishlist', args=[self.slug])
def __str__(self):
return self.title
формы
Это первая попытка, где я попытался сделать фильтрацию пользователей традиционным способом - используя "requset.user", но получил ошибку "запрос не определен".
class AddToWishlistForm(forms.ModelForm):
wishlists = CustomWLMenu(queryset=Wishlist.objects.filter(user=request.user), widget=forms.CheckboxSelectMultiple)
class Meta:
model = Profile
fields = ['wishlists']
После поиска решений я наткнулся на этот метод - и он все еще не работает. Он работает, но извлекает все списки желаний, а не текущего вошедшего пользователя, как показано ниже:
class CustomWLMenu(forms.ModelMultipleChoiceField):
def label_from_instance(self, user):
return "%s" % user
class AddToWishlistForm(forms.ModelForm):
wishlists = CustomWLMenu(queryset=Wishlist.objects.filter(), widget=forms.CheckboxSelectMultiple)
class Meta:
model = Profile
fields = ['wishlists']
Спасибо за ответ.