python - Django 表单集 : Passing a parameter in each form instance

标签 python django

在我的表单集中,用户可以在每个表单上选择、项目、小时数和日期。

发布到数据库的“用户”参数应该是经过身份验证的用户的名称(我的身份验证系统工作正常)

我不确定如何将此参数(用户)传递到表单集中,因此它会自动提交到表单每个实例的 USER 列。

我给 RTFM 试了 3 个小时,所以我转到这里。

View .py

def add_hours(request):

    context = RequestContext(request)

    HourFormSet = modelformset_factory(Hour, extra=5)



    if request.method == 'POST':
        formset = HourFormSet(request.POST)

        formset.save(commit=True)

        return index(request)

    else:
        formset = HourFormSet(queryset=Hour.objects.none())


    context_dict = {'formset': formset}


    return render_to_response('add_hours.html', context_dict, context)

模型.py

class Hour(models.Model):
    user = models.ForeignKey(User, help_text = 'Enter your name')
    hour = models.IntegerField(default=0, help_text = 'How many hours?')
    date = models.DateField(help_text = 'Date (MM/DD/YY)')
    project = models.ForeignKey(Project, help_text = 'Select the project')

    def __unicode__(self):
        return str(self.user) + ' ' + str(self.date)
    def project_name(self):
        return self.project.name

最佳答案

首先,确保您没有在表单中包含用户:

HourFormSet = modelformset_factory(Hour, extra=5, exclude=('user',))

然后,在保存实例之前添加用户:

if request.method == 'POST':
    formset = HourFormSet(request.POST)

    if formset.is_valid():
        instances = formset.save(commit=False)  # This will return unsaved Hour objects
        for instance in instances:
            instance.user = request.user        # Add the logged in user
            instance.save()
        return index(request)

formset = HourFormSet(queryset=Hour.objects.none())
context_dict = {'formset': formset}
return render_to_response('add_hours.html', context_dict, context)

关于python - Django 表单集 : Passing a parameter in each form instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20411131/

相关文章:

python - theano g++ 未检测到

python - django-registration-redux - NoReverseMatch 在/accounts/register/

python - 在其他列表中迭代 python 列表

python - django 错误 "Exception Type: NameError at/polls Exception Value: name ' urls' 未定义”应用程序链接

python - Django ORM查询连接两个字段上不相关的表

python - 全局名称 'request' 未定义

python - 如何读取pandas中的第一列和最后一列?

python - 通过for循环和exec()创建一系列映射

Django:具有多个外键的复杂表单集

django - 获取数据库 django 模型对象是从