【问题标题】:Cannot set excluded field in ModelForm in Django 1.4无法在 Django 1.4 的 ModelForm 中设置排除字段
【发布时间】:2013-10-27 08:33:41
【问题描述】:

我正在尝试为模型创建一个表单,并在我在 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'

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

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    由于排除了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()
    

    【讨论】:

    • 确实像这样工作,但与记录的方式不同。感谢您的超快响应:)
    猜你喜欢
    • 2011-08-08
    • 2018-11-08
    • 2014-08-19
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2018-07-17
    • 2013-01-03
    相关资源
    最近更新 更多