Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django表单集中预填充部分初始数据_Django_Django Forms_Formsets - Fatal编程技术网

在Django表单集中预填充部分初始数据

在Django表单集中预填充部分初始数据,django,django-forms,formsets,Django,Django Forms,Formsets,我在django表单集中实现初始数据时遇到困难 在上下文中,我正在构建一个考勤应用程序,其中有一个学生列表,每天都需要进行考勤评估 我要做的是让管理员点击一个上面有日期的链接。然后,它们将被带到数据网格中,其中每一行表示系统中的学生人数以及4列(学生姓名、日期、出席/缺席下拉列表、备注字段)。目标是使用学生模型中的学生列表预填充学生姓名字段,使用用户单击的链接上的日期预填充日期字段,并使用用户输入的考勤和笔记字段 任何帮助都将不胜感激 谢谢 - 学生模型 班级学生(模型。模型): first_n

我在django表单集中实现初始数据时遇到困难

在上下文中,我正在构建一个考勤应用程序,其中有一个学生列表,每天都需要进行考勤评估

我要做的是让管理员点击一个上面有日期的链接。然后,它们将被带到数据网格中,其中每一行表示系统中的学生人数以及4列(学生姓名、日期、出席/缺席下拉列表、备注字段)。目标是使用学生模型中的学生列表预填充学生姓名字段,使用用户单击的链接上的日期预填充日期字段,并使用用户输入的考勤和笔记字段

任何帮助都将不胜感激

谢谢

-

学生模型
班级学生(模型。模型):
first_name=models.CharField(最大长度=255)
last_name=models.CharField(最大长度=255)
性别选择=(
(‘男’、‘男’),
(‘女性’、‘女性’),
)
gender=models.CharField(最大长度=12,选项=gender\u选项,null=False,blank=False)
出生日期=models.DateField(auto\u now=False,auto\u now\u add=False)
@财产
def全名(自我):
返回“”。加入([self.first\u name',self.last\u name])
def ___; unicode(自):
返回self.full\u名称
出席模式
课堂出勤率(models.Model):
学生=models.ForeignKey('students.student'))
考勤日期=models.DateField(auto\u now=False,auto\u now\u add=False)
状态_选项=(
('present','1'),
(“缺席”,“0”),
)
status=models.CharField(最大长度=12,选项=status\u选项,null=False,blank=False)
notes=models.CharField(最大长度=300,null=True,blank=True)
类元:
共同唯一=(“学生”、“出勤日期”)
def ___; unicode(自):
自考生
出席表格
上课人数表格(forms.ModelForm):
类元:
模型=出勤率
字段=[“学生”、“出勤日期”、“状态”、“备注”]
看法
def添加_出勤(请求):
s=Student.objects.all().values()
AttendanceFormSet=formset\u工厂(AttendanceForm,额外=0)
formset=AttendanceFormSet(request.POST或None,初始值=s)
如果formset.is_有效():
尝试:
instance=form.save(commit=False)
save()实例
返回HttpResponseRedirect(“/”)
除:
返回HttpResponseRedirect(“/”)
上下文={
“formset”:formset,
}
返回呈现(请求“group_attention.html”,上下文)
模板
{{formset.management_form}
{formset.forms%%中表单的%
{%if-forloop.first%}
{%form.visible_fields%}
{{field.label | capfirst}}
{%endfor%}
{%endif%}
{%form.visible_fields%}
{#在#表单中包含隐藏字段}
{%if-forloop.first%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%endif%}
{{field.errors.as_ul}}
{{field}}
{%endfor%}
{%endfor%}

我不太确定我是否理解了你的问题。我认为您正在寻找一种生成动态表单的方法,这些表单预先填充了数据库中的数据

这里有一篇非常有用的文章

您没有固定数量的学生(->表单中的字段),因此必须根据需要生成尽可能多的字段。因此,您必须迭代学生并为每个学生创建一个表单字段

你可以在上面的文章中找到这一点。下面是一段代码片段及其解释:

class UserCreationForm(forms.Form):
    username = forms.CharField(max_length=30)
    password1 = forms.CharField(widget=forms.PasswordInput)
    password2 = forms.CharField(widget=forms.PasswordInput)

    def __init__(self, *args, **kwargs):
        extra = kwargs.pop('extra')
        super(UserCreationForm, self).__init__(*args, **kwargs)

        for i, question in enumerate(extra):
            self.fields['custom_%s' % i] = forms.CharField(label=question)
class UserCreationForm(forms.Form):
    username = forms.CharField(max_length=30)
    password1 = forms.CharField(widget=forms.PasswordInput)
    password2 = forms.CharField(widget=forms.PasswordInput)

    def __init__(self, *args, **kwargs):
        extra = kwargs.pop('extra')
        super(UserCreationForm, self).__init__(*args, **kwargs)

        for i, question in enumerate(extra):
            self.fields['custom_%s' % i] = forms.CharField(label=question)