Я создаю интерфейс настроек, который работает путем сканирования папки настроек в установленных приложениях, сканирования файлов настроек и, наконец, сканирования для ModelForms.
Сейчас я на последнем шаге. Формы правильно найдены и загружены, но теперь мне нужно предоставить исходные данные. Исходные данные нужно вытащить из базы данных, и, как вы можете себе представить, он должен быть ограничен аутентифицированным пользователем (через request.user.id).
Имейте в виду, все это делается динамически. Ни одно из имен ни для чего, ни для их структуры известно в расширенном (я действительно не хочу поддерживать скучный интерфейс настроек).
Вот пример формы настроек. Я просто выбираю модель и какие поля пользователь может редактировать (это та степень, в которой я хочу поддерживать интерфейс настроек).
class Set_Personal_Info(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('nick_name', 'url')
Я посмотрел на modelformset_factory, который почти делает то, что я хочу сделать, но он работает только с результатами двух или более. (Здесь obj - одна из форм настроек)
Formset = modelformset_factory(obj.Meta.model, form=obj)
Formset(queryset=obj.Meta.model.objects.filter(id=request.user.id))
Я не могу фильтровать данные, я должен получить один и только один результат. К сожалению, я не могу использовать get()
Formset = modelformset_factory(obj.Meta.model, form=obj)
Formset(queryset=obj.Meta.model.objects.get(id=request.user.id))
"Пользовательский" объект не имеет атрибута "упорядочено"
Предоставление результата запроса, поскольку исходные данные также не работают, поскольку это не список.
Formset = modelformset_factory(obj.Meta.model, form=obj)
Formset(initial=obj.Meta.model.objects.get(id=request.user.id))
Объект пользователя не поддерживает индексирование
У меня такое чувство, что ответ прямо передо мной. Как я могу вытащить базу данных из базы данных и вставить ее в форму в качестве начальных значений?