无法在Django 1.4中的ModelForm中设置排除字段

时间:2013-10-27 08:33:41

标签: django django-forms

我正在尝试为模型创建一个表单,并排除其中一个字段,因为我在网址中获取它。

根据https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/中排除字段的文档,我应该能够执行以下操作:

class Activity:
    ....

class ActivityGoal(models.Model):
    name = models.CharField(max_length=100)
    value = models.IntegerField()
    activity = models.ForeignKey(Activity)

class ActivityGoalForm(ModelForm):
    class Meta:
        model = ActivityGoal
        exclude = ('activity',)

....
activity = Activity.objects.get(id=id)
form = ActivityGoalForm(request.POST, activity=activity)

我在实例化表单时设置了排除字段,但我得到了以下错误:

__init__() got an unexpected keyword argument 'activity'

这几乎完全取决于文档中的示例代码,因此不确定我在那里缺少什么。在我采用手工制作表格之前,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

排除activity字段后,您无法将其设置为实例化表单。你需要以不同的方式设置它。

这样的事情:

activity = Activity.objects.get(id=id)
form = ActivityGoalForm(request.POST)
if form.is_valid():
    #use commit = false, set other excluded fields, and then save object
    obj = form.save(commit=False)
    obj.activity = activity
    obj.save()