DJANGO ModelAdmin SQLLite错误:此数据库后端不支持DISTINCT ON字段

时间:2015-02-12 19:46:55

标签: django distinct django-queryset modeladmin

我的模特是

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

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

2 个答案:

答案 0 :(得分:2)

你的问题在于这一行

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

.distinct()无法与sqlite3一起使用,因此您必须切换到类似postgres才能使用它或修改您的查询。另外Each field in your model should be an instance of the appropriate Field class.因此您错误地定义了Contrat模型字段。

答案 1 :(得分:0)

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