1

我的模型是

class Contrat(models.Model):
    Procedure = models.ForeignKey(Procedure)
    Contrat_text = models.CharField(max_length=150)

    def __str__(self):
        return self.Contrat_text

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)

    def __str__(self):
        return self.Contrat

我的管理模型是:

class DocumentAdmin(admin.ModelAdmin):
        fields = ('Contrat', 'isContrat', 'isCdC', 'isCR')
        list_display = ('id','isContrat', 'isCdC', 'isCR')
        ordering = ('id',)

    admin.site.register(Document, DocumentAdmin)

但我得到的是:

DISTINCT ON fields is not supported by this database backend

有人知道如何无错误地创建模型管理员吗?

4

2 回答 2

2

你的问题出在这条线上

Contrat = Contrat.objects.order_by('Contrat_text').distinct('Contrat_text')

.distinct() 不能与 sqlite3 一起使用,因此您必须切换到 postgres 之类的东西才能使用它或修改您的查询。此外,模型中的每个字段都应该是相应 Field 类的实例。所以您错误地定义了您的 Contrat 模型字段。

于 2015-02-12T20:17:23.247 回答
1

对于mysql:你可以使用Model.objects.values_list('field').order_by('field').distinct()

于 2018-10-09T12:56:25.073 回答