当其模型中包含多个外键时,如何在内联表单集中执行编辑?

2024-09-29 01:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用表单集输入课程计划,当我试图编辑记录时,它显示一个错误:
inlineformset_factory()为关键字参数“form”获取了多个值。 该表单的模型包含多个外键

我试图描述inlineformset中的外键字段

views.py

def edit_course_schedule(request,scheduleid):
    instance = CourseSchedule.objects.get(id=scheduleid)
    schedule_form = CourseScheduleForm()
    schedule_formset = inlineformset_factory(
        DynamicCoursePrice,
        CourseType,
        Course,
        CourseSchedule,
        can_delete=True,
        form=schedule_form,
        fk_name=('dynamic','course_type','course'),
        extra=0,
        max_num=1,
        fields= '__all__'
    )
    schedule_form = CourseScheduleForm(instance=instance)
    scheduleformset = 
    schedule_formset(prefix='schedule_formset',instance=instance)
    context = {
        'scheduleid' : scheduleid,
        'schedule_form' : schedule_form,
        'schedule_formset' : schedule_formset,
    }
    return render(request,'myapp/edit_course_schedule.html', context)

models.py

class CourseSchedule(models.Model): 
    dynamic = models.ForeignKey(DynamicCoursePrice, on_delete=models.CASCADE, blank=True, null=True)
    course_type = models.ForeignKey(CourseType, on_delete=models.CASCADE, blank=True, null=True)
    course = models.ForeignKey(Course, on_delete=models.CASCADE, blank=True, null=True)
    start_date = models.DateField("Start Date", blank=True, null=True)
    end_date = models.DateField("End Date", blank=True, null=True)
    hours = models.IntegerField("Hours", blank=True, null=True)
    time = models.CharField("Time interval", max_length=255,blank=True, null=True)
    day = models.CharField("Day", max_length=255,blank=True, null=True )

我想在formset视图中编辑时间表,以便我可以向课程添加或删除新的时间表。请帮我想办法解决这个问题


Tags: instanceformtruemodelsdeletenullmaxschedule