我已经使用模型Page
和Mark
构建了一个小应用。
Mark
还有一个ModelForm
类MarkForm
,我告诉他将其所有属性显示为小部件,ForeignKey
除外,editable=False
}。 Page
和Mark
之间存在一对多的关系 - 一个Page
,多个Marks
。
但是,当我尝试提交MarkForm
时,它会说明ForeignKey
字段不能为空 - 有没有办法自动告知表单(在服务器端),那么html中不会有表单输出(我不希望用户能够将marks
添加到其他Pages
)。
如果我遗失了什么,请告诉我,也许我在模特或观点中做错了。这是一些代码:
class Mark(models.Model):
page = models.ForeignKey(Page, editable=False)
x = models.IntegerField()
y = models.IntegerField()
width = models.IntegerField()
height = models.IntegerField()
body = models.CharField(max_length=200)
class MarkForm(forms.ModelForm):
class Meta:
model = Mark
widgets = {
'x': HiddenInput(),
'y': HiddenInput(),
'width': HiddenInput(),
'height': HiddenInput(),
'body': HiddenInput(),
}
答案 0 :(得分:2)
要排除某个字段,您可以do it in the ModelForm's Meta class。
要预先设置字段值,您可以在视图中执行,例如:
if request.method == 'POST':
form = MarkForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.page = myid
obj.save()