Я ограничил количество файлов, которые пользователь может загрузить на мой сайт с помощью логического запроса в файле views.py моего приложения для загрузки.Короче говоря, после того, как пользователь загрузил 5 файлов, они перенаправляются на страницу, которая говорит, что они должны стать премиум-участником.
Сейчас я пытаюсь добавить к этой логике, проверив, находятся ли они в группе «Свободный пользователь».Если это не так, им должно быть разрешено загружать неограниченное количество файлов.
До сих пор я использовал админ-панель для создания двух групп.Один - «Бесплатный пользователь», а другой - «Золотой пользователь».
Я дал обеим группам разрешения на добавление, изменение, удаление, просмотр для моего приложения "beatupload".
Я добавил этот код для своих пользователей models.py
# users/models.py
from django.contrib.auth.models import AbstractUser, Group
from django.db import models
class CustomUser(AbstractUser):
pass
# add additional fields in here
group = models.ForeignKey(Group, on_delete=models.CASCADE, default=1)
def __str__(self):
return self.email
Я вижу, что в моей таблице users_customuser есть поле для group_id, но когда я меняю группу в интерфейсе администратора, нетизменения отражают.
Когда я проверяю таблицу с помощью select * from auth_group
, я вижу, что у меня есть идентификатор и имя группы, поскольку я являюсь Free User и Gold User.
Я пытаюсь использовать этот запрос в своей загрузке views.py:
class uploadNew(CreateView): # new
model = beat
fields = ['title', 'beat']
success_url = reverse_lazy('uploads')
#Check number of beats uploaded by user and if exceeds require signup
def get_template_names(self):
if (beat.objects.filter(producer=self.request.user).count() <= 4 and user.groups.filter(name='Free User').exists()):
return ['uploadNew.html',]
else:
return ['becomeMember.html',]
# END CHECK #
def form_valid(self, form):
form.instance.producer = self.request.user
return super(uploadNew, self).form_valid(form)
Так или иначе, я неправильно связываю своего настраиваемого пользователя с группой, и нет проверки, какая группапользователь может либо разрешить неограниченное количество загрузок, либо потребовать стать Золотым пользователем.
Пожалуйста, дайте мне знать, если вам нужно увидеть больше кода, а также объясните новичку, если это возможно, отметив, в каких областях я могу быть слабым и что мне нужно больше читать в документации Django.Я на 2.2.2 кстати.