0

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

根据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'

这几乎直接来自文档中的示例代码,所以不确定我在那里缺少什么。在我求助于手工制作我的表格之前,任何帮助都将不胜感激。

4

1 回答 1

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()
于 2013-10-27T08:42:56.700 回答