Django : Как мне исправить эту форму для отображения данных моделей в выпадающем списке

Я новичок в Django. Я хочу создать форму для выпадающего списка. Выпадающий список должен показывать различные варианты в зависимости от пользователя и модели. Итак, чтобы получить данные, которые я хочу отобразить в выпадающем списке. Я начинаю получать идентификатор пользователя. Затем из ID пользователя я получаю список ID клиентов, к которым этот пользователь имеет доступ в модели "TblAadJntGroup". Наконец, я определяю список клиентов, получая корреляцию этого списка ID в модели "TblAadGroups".

Я пишу эту форму на основе моделей, которые приведены ниже. Она хорошо получает "id_client_list", но я не знаю, как добавить его в "forms.ChoiceField" после метода init. Что я должен изменить или улучшить

Forms.py

class SelectClient(forms.ModelForm):

    def __init__(self, *args, **kwargs) :
        self.user = kwargs.pop('user')
        super(SelectClient, self).__init__(*args, **kwargs)

        id_client_list = TblAadJntGroup.objects.filter(id_aaduser=self.user.id).values_list('id_aadgroup', flat=True)
        id_client_list = list(id_client_list)

        self.fields['ID_Customer'].queryset = TblAadGroups.objects.all().filter(id__in=id_client_list)
        
        
    class Meta:
        model = UploadFiles
        fields = ['ID_Customer']
   
    client_list = forms.ChoiceField()

models.py

class TblAadJntGroup(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    id_aadgroup = models.IntegerField(db_column='ID_AADGroup', blank=True, null=True)  # Field name made lowercase.
    id_aaduser = models.IntegerField(db_column='ID_AADUser', blank=True, null=True)  # Field name made lowercase.
    createdon = models.DateTimeField(db_column='CreatedOn', blank=True, null=True)  # Field name made lowercase.
    createdby = models.CharField(db_column='CreatedBy', max_length=255, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'tbl_AAD_jnt_GroupMember'

class TblAadGroups(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    idcustomer = models.IntegerField(db_column='IDCustomer', blank=True, null=True)  # Field name made lowercase.
    groupname = models.CharField(db_column='GroupName', max_length=255, blank=True, null=True)  # Field name made lowercase.
    samaccountname = models.CharField(db_column='SamAccountName', max_length=255, blank=True, null=True)  # Field name made lowercase.
    groupcategory = models.CharField(db_column='GroupCategory', max_length=255, blank=True, null=True)  # Field name made lowercase.
    groupscope = models.CharField(db_column='GroupScope', max_length=255, blank=True, null=True)  # Field name made lowercase.
    displayname = models.CharField(db_column='DisplayName', max_length=255, blank=True, null=True)  # Field name made lowercase.
    groupdescription = models.CharField(db_column='GroupDescription', max_length=255, blank=True, null=True)  # Field name made lowercase.
    timestampm = models.DateTimeField(db_column='TimeStampm', blank=True, null=True)  # Field name made lowercase.
    username = models.CharField(max_length=255, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'tbl_AAD_Groups'

Чтобы исправить ошибку, вы должны определить модель для вашей ModelForm. Пример:

class SelectClient(forms.ModelForm):

    class Meta:
        model = TblAadGroups
        fields = '__all__'

    def __init__(self, *args, **kwargs) :
        ...
        ...
Вернуться на верх