Django内联表单集-根据相关模型对其进行排序还是有条件地显示表单?

问题描述

我有一个模型巡视,其中有一个到模型驱动程序的外键,另一个到模型时间表的外键。 django中的嵌入式表单集是基于Driver and Tour表单创建的。

我想根据“时间表”表单中的字段(组日期和时间之后的顺序)过滤表单集-该表单的外键应该是静态的,并且永不更改,因此未在表单中显示。 我无法通过表单访问“时间表”模型中的数据-可以吗?

型号

   class TiMetable(models.Model):
        route = models.AutoField(primary_key=True)
        group = models.CharField(max_length=1,default='')
        day = models.DateField(auto_Now=False,auto_Now_add=False)
        time = models.TimeField(auto_Now=False,auto_Now_add=False)
    
    class Tour(models.Model):
        #FK
        driver = models.ForeignKey(User,default=None,on_delete=models.CASCADE)
        route = models.ForeignKey(TiMetable,on_delete=models.CASCADE
    
        departed = models.DateTimeField(auto_Now_add=False)
        arrived = models.DateTimeField(auto_Now_add=False)
    

观看次数

 @login_required(login_url="/accounts/login/")
    def display_all(request):
    
        driver = User.objects.get(username = request.user)
        TourFormSet = inlineformset_factory(User,Tour,fields=('departed','arrived'),can_delete =False,extra = 0)
    
        if request.method == 'POST':
            formset = TourFormSet(request.POST,request.FILES,instance=driver)
            if formset.is_valid():
                formset.save()
                return redirect('app:final')
        else:
            formset = TourFormSet(instance=driver)
        return render(request,'app/displayall.html',{ 'formset':formset })

或者,我尝试在模板中显示排序的时间表表,并有条件地显示表单集中的正确表单。紧随其后正确显示,但表单集停止以这种方式保存。保存此处的表单可能会破坏什么?我没有收到错误消息,但是没有保存数据,而是将我重定向到同一页面-表单本身这次从模板中消失了。

HTML

<td>
  {% for form in formset %}
     {% if form.instance.route == route %}
         {{form.arrived}}
     {% endif %}
  {% endfor %}
</td>

我也尝试将can_order属性用于表单集,但无法理解如何以编程方式更改订单。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)