Я делаю сайт со списками покупок. Одной из функций будет возможность поделиться своим списком с кем-нибудь. Проблема в том, что я не могу понять, как заставить test_fun c в UserPassesTestMixin работать с ним.
views:
class ListDetailUpdateView(LoginRequiredMixin,UserPassesTestMixin, CreateView):
model = ShoppingItem
template_name = 'xlist_app/ListDetailUpdateView.html'
context_object_name = 'products'
fields = ['name', 'count']
...
def test_func(self):
shop_list_id= self.request.resolver_match.kwargs['pk']
shop_list = ShoppingList.objects.get(id=shop_list_id)
if self.request.user == shop_list.owner or self.request.user == shop_list.owners:
return True
return False
models:
class ShoppingList(models.Model):
list_name = models.CharField(max_length=50, null=False)
date_created = models.DateTimeField(auto_now=True)
owner = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,
related_name='shopping_lists',
null = True, blank=True)
owners = models.ManyToManyField(User)
Как вы Как видите, у меня есть поле «владелец», в котором хранится этот список, и «владельцы», в котором хранятся пользователи, которым предоставлен доступ к списку. Мне нужна помощь с этой частью:
self.request.user == shop_list.owners
Как заставить его работать или почему не работает? (Когда я делюсь списком из другой учетной записи себе, выскакивает «403 Forbidden»)