だから、私はDjangoの汎用ビューを持っています:
class Foobaz(models.Model):
name = models.CharField(max_length=140)
organisation = models.ForeignKey(Organisation)
class FoobazForm(forms.ModelForm):
class Meta:
model = Foobaz
fields = ('name')
class FoobazCreate(CreateView):
form_class = FoobazForm
@login_required
def dispatch(self, *args, **kwargs):
return super(FoobazCreate, self).dispatch(*args, **kwargs)
私がやろうとしているのは、URL から組織 ID を取得することです。
/organisation/1/foobaz/create/
そして、それを作成したオブジェクトに追加します。でこれを実行できることはCreateView.form_valid()
わかっていますが、私が理解していることから、これは完全に検証されていません。
追加しようとしましたget_form_kwargs()
が、含まれているフィールドにないため、組織の kwarg は想定されていません。
理想的には、それをフォームのインスタンスに追加して、残りの部分で検証することです-それが有効な組織であること、および問題のユーザーが新しいフーバズを追加するための正しい権限を持っていることを確認します.
それがこれを行う最善の方法である場合、私は自分の見解を転がして喜んでいますが、単にトリックを見逃しているだけかもしれません.
ありがとう!