所以,我有一个 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,因为它不在包含的字段中。
理想情况下,我想做的是将它添加到表单的实例中以与其余部分一起验证它 - 确保它是一个有效的组织,并且有问题的用户具有正确的权限来添加一个新的 foobaz 到它。
如果这是最好的方法,我很乐意发表自己的观点,但我可能只是错过了一个技巧。
谢谢!