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()
调用将失败,对吗?那么,我如何继续?