我试图在django 1.7中学习基于类的视图。
我有两个模型,第二个模型首先有外键。
class A(models.Model):
text = models.CharFeild(max_length=10)
class B(models.Model):
a1 = models.ForeignKey(A)
content = models.TextField()
class BCreateView(CreateView):
model = B
fields = ['a1', 'content']
并形成:
<form action="?" method="post">
<table>
{{ form.as_table }}
</table>
<input type="submit" value="create" />
</form>
当用户使用第一个模型的值输入数据而不是下拉列表时,我想使用文本输入,因此用户只需在处理B表单之前输入文本和A创建实例。我无法做到弄清楚如何使用基于类的视图和表单来做到这一点。
答案 0 :(得分:0)
您需要创建一个自定义表单,而不是依赖于自动生成的表单,django为您提供了CreateView。
class MyForm(ModelForm):
class Meta:
model = B
fields = ('a1', 'content)
widgets = {
'a1': TextInput(),
}
然后在你的视图中:
class BCreateView(CreateView):
model = B
form_class = MyForm
在此处查看更多详情:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-fields
答案 1 :(得分:0)
所以最终我从FormView继承了BCreateView,并将form类定义为forms.Form的后代,并在post方法中手动检查表单。