Django динамически заполняет форму Model моделью - возможно ли это?

Я пытаюсь использовать модель формы независимо от передаваемой модели. Моя цель состоит в том, чтобы иметь список таблиц базы данных, где пользователь может выбрать таблицу, которая затем отображается. Затем в этой таблице есть возможность выбрать запись таблицы, которая может быть обновлена. Со временем таблицы будут меняться, поэтому я хочу использовать одну форму модели, чтобы включить все поля для редактирования и просто изменить базовую модель.

Я попробовал несколько вещей, и сейчас это моя «последняя» попытка, которая не работает. Какие-нибудь советы или рекомендации?

Это в моем файле views.py

class DynamicModelForm(forms.ModelForm):
    class Meta:
        model = None
        fields = '__all__'

# setting the model based on the input selection of user
def get_dynamic_form(request, model, instance=None):
    DynamicModelForm.model = model
    DynamicModelForm.fields = '__all__'
    return DynamicModelForm(request.POST or None , instance=instance)
#
#
#
# in my class based view I am using this to list the tables
def list(self, request, model, model_name):
        print(f'Pulling model {model_name}')
        objects = model.objects.all()
        fields = [field.name for field in model._meta.fields]  # Retrieve field names


        
        self.context['fields'] = fields
        self.context['model_name'] = model_name 
        self.context['objects'], self.context['info'] = set_pagination(request, objects)
        if not self.context['objects']:
            return False, self.context['info']

        return self.context, 'app/transactions/table_view.html'

Ваш get_dynamic_form, по сути, является тем, что Django делает с modelform_factory(…) [Django-doc]. Действительно, мы можем работать с:

from django.forms.models import modelform_factory


def get_dynamic_form(request, model, instance=None):
    return modelform_factory(model, fields='__all__')(
        request.POST or None, instance=instance
    )
Вернуться на верх