Django 3.2.6 | Admin | get_form() | Modify Form Field | Error: 'NoneType' object has no attribute 'base_fields'

Я настраиваю свои формы Django Admin, чтобы изменить кверисет поля формы. Приведенный ниже код работает на некоторых из моих моделей, но не на других.

Единственное различие между моделями - это название, поскольку все они имеют одинаковые поля:

Club = models.ForeignKey('configuration.Club', on_delete=models.SET_NULL, null = True, blank=True)
Title = models.CharField(max_length=30, blank=False)
Description = models.CharField(max_length=120, blank=True)

Код, который преодолевает исключение (Trophy)

Модель:

class Trophy(models.Model):
    Club = models.ForeignKey('configuration.Club', on_delete=models.SET_NULL, null = True, blank=True)
    Title = models.CharField(max_length=120, blank=False, unique=True)
    Description = models.CharField(max_length=360, blank=False, unique=True)

    class Meta:
        ordering = ['Title', 'Club']
        unique_together = ['Title', 'Club']

    def __str__(self):
        return self.Title

Admin:

class TrophyView(admin.ModelAdmin):
    list_display = ('id', 'Club', 'Title', 'Description')

    #Modify Form
    def get_form(self, request, obj=None, **kwargs):

        #Get User's Profile >> Club
        user = request.user
        profile = vMemberDetails.objects.get(username=user.username)
        club = profile.Club_pk
        clubID = Club.objects.filter(id=club)
    
        #Super
        form = super(TrophyView, self).get_form(request, obj, **kwargs)
        form.base_fields['Club'].queryset = clubID
 
    #Modify View
    def get_queryset(self, request):
        qs = super(admin.ModelAdmin, self).get_queryset(request)
        user = request.user
        profile = vMemberDetails.objects.get(username=user.username)
        club = profile.Club_pk
        clubID = Club.objects.get(id=club)
        profiles = vMemberDetails.objects.filter(Club_pk=clubID.pk)
        if request.user.is_superuser:
            return qs
        else: 
            return qs.filter(Club=clubID.pk) | qs.filter(Club__isnull=True)
        
admin.site.register(Trophy,TrophyView)

Когда я print(form.base_fields):

{'Club': django.forms.models.ModelChoiceField object at 0x000001E3895D6AF0, 
'Title': django.forms.fields.CharField object at 0x000001E3895D6A60, 
'Description':django.forms.fields.CharField object at 0x000001E3895D6D30}

Когда я print(form.base_fields['Club'].queryset):

QuerySet [Club: Test_001 Club, Club: Test_002]

Exception 'NoneType' object has no attribute 'base_fields':

AttributeError at /admin/configuration/trophy/add/
'NoneType' object has no attribute 'base_fields'
Request Method: GET
Request URL:    http://localhost:8000/admin/configuration/trophy/add/
Django Version: 3.2.6
Exception Type: AttributeError
Exception Value:    
'NoneType' object has no attribute 'base_fields'
Python Version: 3.8.11

Код, который возвращает модифицированный кверсет против аналогичной модели (Target)

Модель:

class Target(models.Model):
    Club = models.ForeignKey('configuration.Club', on_delete=models.SET_NULL, null = True, blank=True)
    Title = models.CharField(max_length=30, blank=False)
    Description = models.CharField(max_length=120, blank=True)

    class Meta:
        ordering = ['Title']
        unique_together = ['Title', 'Club']

    def __str__(self):
        return self.Title

Admin:

class TargetView(admin.ModelAdmin):
    list_display = ('id', 'Club', 'Title', 'Description')

    #Modify Form
    def get_form(self, request, obj=None, **kwargs):
        user = request.user
        profile = vMemberDetails.objects.get(username=user.username)
        club = profile.Club_pk
        clubID = Club.objects.filter(id=club)

        #Super
        form = super(TargetView, self).get_form(request, obj, **kwargs)
        form.base_fields['Club'].queryset = clubID
        return form

    #Modify View
    def get_queryset(self, request):

        #Get User's Profile >> Club
        qs = super(admin.ModelAdmin, self).get_queryset(request)
        user = request.user
        profile = vMemberDetails.objects.get(username=user.username)
        club = profile.Club_pk
        clubID = Club.objects.get(id=club)
        profiles = vMemberDetails.objects.filter(Club_pk=clubID.pk)
        if request.user.is_superuser:
            return qs
        else: 
            return qs.filter(Club=clubID.pk) | qs.filter(Club__isnull=True)
        
admin.site.register(Target,TargetView)
Вернуться на верх