Django Пользовательские права, предоставленные в админке сайта, не работают
Я создал права на выпадающий список, дал пользователю права на выпадающий список на странице администрирования, чтобы после входа в систему он мог видеть только пункт 1 и пункт 2. После входа в систему список пуст, ни один элемент не отображается.
models.py
from django.db import models
class Main(models.Model):
positions = [
('1', 'Position 1'),
('2', 'Position 2'),
('3', 'Position 3'),
]
drop_down = models.CharField(max_length=1, choices=positions)
text = models.CharField(max_length=255, blank=True, null=True)
forms.py
from django import forms
from .models import Main
class main_input(forms.ModelForm):
class Meta:
model = Main
fields = ['drop_down', 'text']
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(main_input, self).__init__(*args, **kwargs)
self.fields['drop_down'].choices = []
if self.user and self.user.has_perm('portal.can_see_position_1'):
self.fields['drop_down'].choices.append(('1', 'Position 1'))
if self.user and self.user.has_perm('portal.can_see_position_2'):
self.fields['drop_down'].choices.append(('2', 'Position 2'))
if self.user and self.user.has_perm('portal.can_see_position_3'):
self.fields['drop_down'].choices.append(('3', 'Position 3'))
class LoginForm(forms.Form):
username = forms.CharField(max_length=50)
password = forms.CharField(widget=forms.PasswordInput)
views.py
ct = ContentType.objects.get_for_model(Main)
for position in Main.positions:
codename = f'can_see_{position[1].replace(" ", "_").lower()}'
name = f'Can see {position[1]}'
if not Permission.objects.filter(codename=codename, content_type=ct).exists():
permission = Permission.objects.create(codename=codename,
name=name,
content_type=ct)
@login_required(login_url='login')
def view_input(request):
if request.method == 'POST':
form = main_input(request.POST or None, user=request.user)
if form.is_valid():
symbol = form.cleaned_data['text']
if form.cleaned_data['drop_down'] == '1':
return employee()
return employee_csv(symbol)
else:
form = main_input(user=request.user)
return render(request, 'index.html', {'form': form})
У меня закончились идеи