python - Django modelformset order_by 不起作用

标签 python django django-models django-forms

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

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 方法,但现在并不重要)。之后,我在我的 View 中使用它来创建表单集:

ExamDateFormSet = modelformset_factory(
    models.ExamDate, 
    exclude =('authority', ), 
    can_delete=True, 
    extra=1,
    formset = forms.BaseExamDateFormSet
)
...
formset = ExamDateFormSet()

我的问题是,当呈现表单集时,表单中的数据始终处于相同的顺序(按 id 的概率),无论 order_by 属性的值如何:(

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

蒂亚!

最佳答案

经过一番搜索,我找到了解决方案!

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

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

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

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

相关文章:

python - Django 部署到 heroku 要求时出错

Python特定类型的深度嵌套字典

python - 使用 Python 将 Dask Dataframe 转换为 Spark Dataframe

javascript - 如何将自定义 js 添加到所有管理模型中? Django

django - 如何使用相应的 Django 模型为 Postgres DB 中的列添加 "description"?

python - MultipleChoiceField 未在 Django Admin 中显示存储的值

Django 2.0 haystack whoosh 更新索引,重建索引抛出错误

python - 将表单输入的行连接成一行

python - vps 上的 django - 重新启动服务器时获取 "model is already registered"

mysql - Django 从 sqlite 迁移到 MySQL。夹具错误