Django-如何在不允许用户输入的情况下为ModelForm设置默认ForeignKey值
我已经用Django-如何在不允许用户输入的情况下为ModelForm设置默认ForeignKey值,django,foreign-keys,modelform,Django,Foreign Keys,Modelform,我已经用页面和标记构建了一个小应用程序 Mark还有一个ModelForm类MarkForm,我告诉过它,除了ForeignKey,它是editable=False,它的所有属性都显示为小部件。在页面和标记之间存在一对多关系-一页面,多标记 但是,当我尝试提交标记表单时,它会抱怨ForeignKey字段不能为空-是否有办法自动告诉表单(在服务器端),这样就不会在html中输出表单(我不希望用户能够在其他页面中添加标记) 如果我遗漏了什么,请让我知道,也许我在模型或视图中做错了什么。下面是一些代码
页面
和标记
构建了一个小应用程序
Mark
还有一个ModelForm
类MarkForm
,我告诉过它,除了ForeignKey
,它是editable=False
,它的所有属性都显示为小部件。在页面
和标记
之间存在一对多关系-一页面
,多标记
但是,当我尝试提交标记表单时,它会抱怨ForeignKey
字段不能为空-是否有办法自动告诉表单(在服务器端),这样就不会在html中输出表单(我不希望用户能够在其他页面中添加标记
)
如果我遗漏了什么,请让我知道,也许我在模型或视图中做错了什么。下面是一些代码:
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(),
}
要排除字段,可以
要预先设置字段值,您可以在视图中执行以下操作,例如:
if request.method == 'POST':
form = MarkForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.page = myid
obj.save()
它告诉我:不能分配“1”:“Mark.page”必须是一个“page”实例。
那么,给他一个page实例。obj.page=page.objects.get(id=1),如果模型中的page
字段不为空,该怎么办?is\u valid()
调用将失败,对吗?那么,我如何继续?