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 rest 框架,order_by 来自 serializers.py 文件的 JSON
Django查找数据库objects.filter() 和 排序order_by 和 Q()与或非 和 F()属性之间比较 的用法