0

我用模型PageMark.

Mark还有一个ModelFormMarkForm,我告诉过它要将它的所有属性显示为小部件,除了ForeignKey,它是editable=False. PageMark- one Page, many之间存在一对多的关系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(),
        }
4

1 回答 1

2

要排除某个字段,您可以在 ModelForm 的 Meta 类中进行。

要预先设置字段值,您可以在视图中执行,例如:

if request.method == 'POST':
        form = MarkForm(request.POST)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.page = myid
            obj.save()
于 2012-07-19T15:10:30.583 回答