Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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_Django Templates_Django Admin_Modelform - Fatal编程技术网

Django如何在一个表单上输入多个记录

Django如何在一个表单上输入多个记录,django,django-forms,django-templates,django-admin,modelform,Django,Django Forms,Django Templates,Django Admin,Modelform,我正在使用以下型号编写日历应用程序: class CalendarHour(models.Model): ''' Each day there are many events, e.g. at 10 am, the framer orders material, etc. ''' day_id = models.ForeignKey(CalendarDay) time = models.TimeField() work = models.T

我正在使用以下型号编写日历应用程序:

class CalendarHour(models.Model):
    '''
    Each day there are many events, e.g. at 10 am, the framer orders
    material, etc.
    '''
    day_id = models.ForeignKey(CalendarDay)
    time = models.TimeField()
    work = models.TextField()

    def __unicode__(self):
        return 'work that took place at {work_time}'.format(work_time = self.time)

class CalendarDay(models.Model):
    '''
    Each project has so many daily logs.  But, each daily log belongs to     only one project (OneToMany relationship)
    '''
    company_id = models.ForeignKey(CompanyCalendar)
    day_date = models.DateField(auto_now_add = True) # Recording the date each log is entered in
    deadline = models.DateField() # The date for the daily log
现在,我想基于这些模型创建一个表单,该表单包含当天的信息,但有24行条目实例,每行代表一小时。因此,在forms.py中: #forms.py 从django.forms导入ModelForm

class HourForm(ModelForm):
    class Meta:
         model = CalendarHour
        fields = ['entry_id', 'day_date', 'deadline']

class DayForm(ModelForm):
    class Meta:
        model = CalendarDay
        fields = ['company_id', 'day_date', 'deadline']

# In views.py:
...
class CalendarSubmit(View):
    template_name = 'calendar/submit.html'
    today_calendar = CalendarDay
    each_hour_calendar = CalendarHour

    def get(self, request):
        return render(request, self.template_name, {'form1': self.toady_calendar, 'form2':self.each_hour_calendar })

    def post(self, request):
        today = self.today_calendar(request.POST)
        each_hour = self.each_hour_calendar(request.POST)

        if today.is_valid():          
            today_calendar.save()

        if each_hour.is_valid():
            each_hour_calendar.save()
现在,我可以在模板中显示两种不同的表单,form_day和form_hour。我甚至可以将form2字段重复24次,但当它被发布时,第一个小时就被保存在数据库中,其他的都被忽略了。我知道在管理中,有一个添加按钮可以添加多个实例,但我不知道在我的例子中如何实现这一点:如何在一个表单上显示两个相关模型,其中引用模型需要多次填充


感谢您的帮助。

谢谢您,丹尼尔!我会阅读文档,并会让你知道是否这样做。没错,我认为Django Formset适合你的情况谢谢你,丹尼尔!我做了阅读。不过我还是有个问题。当用户输入一个时间时,Django抛出一个异常,抱怨输入数据不是带有时区的timestamp类型。time_aware=pytz.timezone(“加拿大/太平洋”).localize(event_datetime,is_dst=None)和instance.time=time_aware也没有成功!还是一样的错误。有什么想法吗?