Python 为什么Django';s的模型形式验证是否认为这是无效的?

Python 为什么Django';s的模型形式验证是否认为这是无效的?,python,django,Python,Django,在我看来,我有一个非常简单的模型设置,modelform和一个视图。唯一的问题是模型有一个无法发布到表单的用户属性,而应该由request.user填充。因此我有以下内容: # models.py class Update(models.Model): user = models.ForeignKey(User, related_name="updates") organisation = models.ForeignKey(Organisation, relat

在我看来,我有一个非常简单的模型设置,modelform和一个视图。唯一的问题是模型有一个无法发布到表单的用户属性,而应该由
request.user
填充。因此我有以下内容:

# models.py
class Update(models.Model):
    user         = models.ForeignKey(User, related_name="updates")
    organisation = models.ForeignKey(Organisation, related_name="updates")
    publish      = models.BooleanField(default=True)



class UpdateForm(ModelForm):
    name = forms.CharField(
        max_length=140,
        required=False,
        widget=forms.TextInput(attrs={"class": "blankable"})
    )

    class Meta(NodeForm.Meta):
        model = Update



# views.py
def status(request):

    from myproject.organisations.models import Organisation
    from myproject.feeds.models         import Update, UpdateForm

    stream = 0
    if request.method == "POST":

        o = request.POST.get("organisation")

        if not o or request.user not in Organisation.objects.get(pk=request.POST.get("organisation")).administrators.all():
            return HttpResponseRedirect(reverse("ethico.core.views.index"))

        f = UpdateForm(request.POST, instance=Update(user=request.user))

        if f.is_valid():
            stream = f.save()
        else:
            stream = f.errors
    ...
每当我运行此操作时,都会出现相同的错误:

user: This field is required.

我尝试使用
{“user”:1}
使用
初始属性设置
f
,但它仍然说这是必需的。我尝试通过将
request.POST
复制到一个新变量中并在将其传递到UpdateForm之前对其进行修改来传递修改后的POST,但这很糟糕。我忘了什么?

您应该尝试排除表单中的用户字段

class UpdateForm(ModelForm):
  name = forms.CharField(
    max_length=140,
    required=False,
    widget=forms.TextInput(attrs={"class": "blankable"})
  )

  class Meta:
    model = Update
    exclude = ("user",)

这不一定是社区维基。对此很抱歉,没有思考就点击了那个框。我可以在这一点上删除这个状态吗?我不这么认为——但是你可以提出一个新的相同的问题,而不是社区维基,然后删除这个问题。哇。我真不敢相信我错过了。非常感谢你!