我正在尝试为模型创建一个表单,并排除其中一个字段,因为我在网址中获取它。
根据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'
这几乎完全取决于文档中的示例代码,因此不确定我在那里缺少什么。在我采用手工制作表格之前,我们将不胜感激。
答案 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()