Django modelformset order帴

2024-09-23 22:25:20 发布

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

我想使用一个Django(1.4)modelformset,在这个模型中,当表单集被加载时,表单将按照我在模型中的exam_date字段排列。我创建了一个简单的模型集

class BaseExamDateFormSet(BaseModelFormSet):
    def __init__(self, *args, **kwargs):
        super(BaseExamDateFormSet, self).__init__(*args, **kwargs)
        self.queryset = models.ExamDate.objects.all().order_by('exam_date')

如您所见,我已经按照 django docs(稍后我还将更改其clean方法,但现在不重要)。之后,我在视图中使用它来创建表单集:

^{pr2}$

我的问题是,当呈现formset时,表单中的数据总是以相同的顺序(probaby by id)而不管order\u by属性的值是什么:(

我应该在ExamDate模型中设置默认的order by吗?不过,我真的不喜欢这种解决办法:(

蒂娅!在


Tags: django模型self表单datebyinitargs
2条回答

更简单的是,在上面的代码中,您可以删除modelformset_factory调用中的formset=参数,并将formset实例化为:

formset = ExamDateFormSet(queryset=models.ExamDate.objects.order_by('exam_date'))

再找了一下,我找到了一个解决办法!在

我忽略了queryset属性,并将以下方法添加到BaseExamDateFormSet:

def get_queryset(self):
    return models.ExamDate.objects.all().order_by('exam_date')

但是我还不知道为什么queryset属性不起作用。在

相关问题 更多 >