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})

У меня закончились идеи

Вернуться на верх