位于/ admin的Django MongoDB DatabaseError

时间:2014-04-12 04:40:23

标签: python django mongodb

我正在尝试切换到使用Django的MongoDB,但遇到了一个问题。也就是说,站点的某些部分在/ admin / myApp / myModel上提供了一个'DatabaseError:数据库不支持此查询。如发布here的类似问题所述,此错误来自... / admin / templates / change_list.html,引发它的行是第85行:

{% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %}

我有几个模型,包含各种CharField,IntegerFields,BooleanFields,DateFields,URLFields和DecimalFields。还有一个ManyToManyField:

class Trail(models.Model):
    sections = models.ManyToManyField(TrailSection)

我对用户等没有任何问题,但每当我尝试访问Trail模型时,我都会收到上述错误。单击/ admin页面的TrailSection部分时没有问题,但是当我单击Trail时会出现此错误。可以打电话

associatedTrails = Trail.objects.filter(sections=sect).order_by('-date').values('trail_id','name')

但是我稍后使用

时收到错误
for t in associatedTrails:

StackOverflow上的另一个问题是将此错误记录为需要修复的错误,但我的问题是:为什么这只会发生?为什么TrailSections或其他/管理页面没有问题,但是这个会引发错误?有没有好办法解决它?

1 个答案:

答案 0 :(得分:0)

事实证明,django-norel不支持ManyToManyFields。在大多数情况下,它们可以由ListFields替换,这些列表支持norel但不支持关系数据库。可以找到更多详细信息here

除了不支持ManyToManyField之外,admin.py中的list_filter只能包含一个项目。也许其他人可以评论为什么,但删除使用单个过滤器摆脱了所有模型的错误。