インストールされたアプリケーションの設定フォルダーをスキャンし、設定ファイルをスキャンし、最後に ModelForms をスキャンすることで機能する設定インターフェイスを作成しています。
私は今、最後のステップにいます。フォームは適切に検出されて読み込まれますが、ここで初期データを提供する必要があります。初期データはデータベースから取得する必要があり、ご想像のとおり、(request.user.id を介して) 認証されたユーザーに限定する必要があります。
これはすべて動的に行われることに注意してください。何の名前も、それらの構造も高度に知られていません (退屈な設定インターフェイスを維持したくありません)。
設定フォームの例を次に示します。モデルと、ユーザーが編集できるフィールドを選択するだけです (これは、設定インターフェイスを維持したい範囲です)。
class Set_Personal_Info(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('nick_name', 'url')
私がやりたいことをほぼ実行するmodelformset_factoryを見てきましたが、2つ以上の結果でしか機能しないようです。(ここで、objは設定フォームの 1 つです)
Formset = modelformset_factory(obj.Meta.model, form=obj)
Formset(queryset=obj.Meta.model.objects.filter(id=request.user.id))
データをフィルター処理できません。結果を 1 つだけ取得する必要があります。残念ながら 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))
「ユーザー」オブジェクトはインデックス作成をサポートしていません
答えは目の前にあるような気がします。データベースからデータベースを引き出して、初期値としてフォームに押し込むにはどうすればよいですか?