我想使用Django(1.4)modelformset,在该模型中,加载表单集时,表单将由模型中的exam_date字段进行排列。为此,我创建了以下简单的BaseModelFormSet

BaseExamDateFormSet(BaseModelFormSet)类:
    def __init __(self,* args,** kwargs):
        超级(BaseExamDateFormSet,self).__ init __(* args,** kwargs)
        self.queryset = models.ExamDate.objects.all()。order_by('exam_date')


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

ExamDateFormSet = modelformset_factory(
    models.ExamDate,
    排除=('authority',),
    can_delete =是,
    extra = 1,
    formset = forms.BaseExamDateFormSet

...
表格集= ExamDateFormSet()


我的问题是,在呈现表单集时,无论order_by属性的值如何,表单中的数据始终按相同的顺序排列(按ID进行排序):(

我应该在ExamDate模型中尝试设置默认订单吗?我真的不喜欢这种解决方案:(

TIA!

最佳答案

经过更多搜索后,我找到了解决方案!

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

def get_queryset(self):
    返回models.ExamDate.objects.all()。order_by('exam_date')


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

关于python - Django modelformset order_by不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15244190/

10-15 21:21