【问题标题】:DJANGO : How to create admin view with a model containt order_by?DJANGO:如何使用包含 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)

【问题讨论】:

  • 您在模型的第二行和最后两行尝试做什么?这段代码能运行吗?

标签: django view filter admin


【解决方案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 字段
  • 我将您的问题解释为“如何在模型上设置订购?”。这就是我写答案的问题。现在弹出一个错误!你之前怎么不提这个?提出更好的问题并获得更好的答案。
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
相关资源
最近更新 更多