DJANGO:如何使用包含 order_by 的模型创建管理视图?

Posted

技术标签:

【中文标题】DJANGO:如何使用包含 order_by 的模型创建管理视图?【英文标题】:DJANGO : How to create admin view with a model containt order_by? 【发布时间】:2015-02-12 15:58:43 【问题描述】:

我的模特是

Class Document(models.Model):
    Contrat = Contrat.objects.order_by('Contrat_text').distinct('Contrat_text')
    isContrat = models.BooleanField(('Contrat'), default=True)
    isCdC = models.BooleanField(('Cahier des Charges'), default=False)
    isCR = models.BooleanField(('Cahier de Recette'), default=False)
    isPG = models.BooleanField(('PG'), default=False)
    isCI = models.BooleanField(('CI'), default=False)
    isDico = models.BooleanField(('Dictionnaire'), default=False)
    isSFG = models.BooleanField(('SFG'), default=False)
    isGuide = models.BooleanField(('Guide'), default=False)
    isWSDL = models.BooleanField(('WSDL'), default=False)
    isDivers = models.BooleanField(('Divers'), default=False)

    def __str__(self):
            return self.Contrat

如何使用相同的过滤器创建管理视图?

class DocumentAdmin(admin.ModelAdmin):
fields = ('Contrat', 'isContrat', 'isCdC', 'isCR', 'isPG', 'isCI', 'isDico', 'isSFG', 'isGuide', 'isWSDL', 'isDivers')
list_display = ('Contrat', 'isContrat', 'isCdC', 'isCR', 'isPG', 'isCI', 'isDico', 'isSFG', 'isGuide', 'isWSDL', 'isDivers')
ordering = ('id',)

admin.site.register(Document, DocumentAdmin)

【问题讨论】:

您在模型的第二行和最后两行尝试做什么?这段代码能运行吗? 【参考方案1】:

查看模型元排序:https://docs.djangoproject.com/en/1.7/ref/models/options/#ordering

class Item(models.Model):
    field_x = SomeField()
    field_y = SomeOtherField()

    class Meta:
        ordering = ['field_x']

不要在 ModelAdmin 或查询中指定排序。模型上的 ordering 字段将是默认值。

更新

您的代码至少有以下问题:

1) Class 是小写 C。所以 class

2) 在模型中 不进行查询。但在视图和管理器等中删除:Contrat = Contrat.objects.order_by('Contrat_text').distinct('Contrat_text')

3) De __str__ 用于给出对象的字符串表示。在 self.Contract 中,您查询其他对象。这没有意义。删除:def __str__(self): return self.Contrat

4) 字段标题应该是字符串而不是元组。 ('Contrat') 应该是 'Contrat',删除所有这些括号......也许如果你使用 gettext 它应该是 _('Contract')。但我怀疑你尝试使用国际化和本地化。

5) BooleanField 默认为 False,因此删除所有 default=False

6) modelAdmin 中的缩进错误。字段应该跳进去。

我希望就是这样。但我可能错过了一两件事。如果您遇到错误,请在您的问题中提供回溯。

【讨论】:

它不工作!模型有:Contrat = Contrat.objects.order_by('Contrat_text').distinct('Contrat_text') order_by 和另一个模型不同我有这个错误:这个数据库后端不支持 DISTINCT ON 字段 我将您的问题解释为“如何在模型上设置订购?”。这就是我写答案的问题。现在弹出一个错误!你之前怎么不提这个?提出更好的问题并获得更好的答案。

以上是关于DJANGO:如何使用包含 order_by 的模型创建管理视图?的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.9 JSONField order_by

如何在 django 中包含条件 order_by?

django rest 框架,order_by 来自 serializers.py 文件的 JSON

使用 distinct 后如何执行 order_by?

Django查找数据库objects.filter() 和 排序order_by 和 Q()与或非 和 F()属性之间比较 的用法

Django告诉双重排序中具有特定属性的最后一项(order_by)