首页 > 解决方案 > 在 CreateWithInlinesView 中,将数据库值中的所有 7 个额外表单保存为默认(表单集)Django

问题描述

 How to save all 7 extra forms which all of their's value are default?      
        
  this inline formset
        

class CompanySchedulePerDaysgraphInlineFormSetFactory(InlineFormSetFactory):
            
                model = models.CompanySchedulePerDaysgraph
                exclude = ('is_work_day',)
                form_class = CompanySchedulePerDaysgraphModelForm
                factory_kwargs = {
                    'can_delete': False,
                    'widgets': {'is_work_day': forms.CheckboxInput(attrs={'class': 'form-control'}),
                                'start_work': forms.TimeInput(attrs={'class': 'form-control', 'type': 'time'}),
                                'end_work': forms.TimeInput(attrs={'class': 'form-control', 'type': 'time'}), },
                    'extra': 7
                }

   *view.py*
    
class CompanyScheduleCreateView(LoginRequiredMixin, CreateWithInlinesView):
    model = models.CompanyScheduleFreeGraph
    inlines = [forms.CompanySchedulePerDaysgraphInlineFormSetFactory]
    form_class = forms.CompanyScheduleFreeModelForm
    template_name = 'backoffice/pages/company-schedule/create.html'
    success_url = reverse_lazy('company_schedule')

    def forms_valid(self, form, inlines):
        response = self.form_valid(form)
        for formset in inlines:
            formset.instance = self.object
            formset.save()
        return response

    def form_valid(self, form):

        self.company = form.save(commit=False)
        self.company.company = self.request.user.company
        self.company.save()
        return super().form_valid(form)

模型.py

类 CompanySchedulePerDaysgraph(models.Model): import datetime days_graph = models.ForeignKey(CompanyScheduleFreeGraph, on_delete=models.CASCADE) is_work_day = models.BooleanField(default=True) start_work = models.TimeField(default=datetime.time(9, 00) ) end_work = models.TimeField(default=datetime.time(18, 00))

        created_at = models.DateTimeField(auto_now_add=True)

标签: djangodjango-forms

解决方案


推荐阅读