在我对AdminModel进行了一些更改之后,我的一个查询突然开始失败。
搜索了一下后,我发现在我的admin_model中添加一个list_filter正在创建FieldError,这对我来说真的很奇怪......
我的模特:
class PiafInfo( models.Model ):
no = models.IntegerField( u'No du Piaf', unique=True )
origin_city = models.ForeignKey( City )
...
class PiafInfoAdmin( admin.ModelAdmin ):
list_display = ('no', 'origin_city', 'group', 'fleet')
list_filter = ['origin_city', ]
ordering = ('no',)
search_fields = ('no', 'group', 'fleet')
admin.site.register( PiafInfo, PiafInfoAdmin )
class PiafTrans( models.Model ):
ttype = models.IntegerField( choices=TTYPE_CHOICES, default=TTYPE_RELOAD)
date = models.DateTimeField()
piafSerial = models.ForeignKey( PiafInfo )
...
class PiafTransAdmin( admin.ModelAdmin):
list_display = ('date', 'piafSerial', 'city', 'ttype', 'amount', 'subscrName' )
date_hierarchy = 'date'
list_filter = ('city', 'ttype')
search_fields = ('piafSerial', 'group', 'fleet', 'subscrName' )
admin.site.register( PiafTrans, PiafTransAdmin )
查询提出问题(第二行):
piafInfos = models.PiafInfo.objects.all().distinct()
piafInfos = piafInfos.filter( piaftrans__date__range=(startDate,endDate) ).distinct()
就像那样,我收到以下错误:
FieldError: Cannot resolve keyword 'piaftrans' into field. Choices are: fleet, group, id, no, origin_city
它试图将piaftrans解释为字段名称而不是模型。
如果我在PiafInfoAdmin评论一行:
class PiafInfoAdmin( admin.ModelAdmin ):
list_display = ('no', 'origin_city', 'group', 'fleet')
# list_filter = ['origin_city', ]
ordering = ('no',)
search_fields = ('no', 'group', 'fleet')
admin.site.register( PiafInfo, PiafInfoAdmin )
错误消失。我没有看到错误与我所做的更改之间存在任何关联!
这适用于Windows上的django 1.3和Python 2.7。
答案 0 :(得分:0)
无法在这里重现。运用 models.py:
class City( models.Model ):
name = models.CharField(max_length=110)
class PiafInfo( models.Model ):
no = models.IntegerField( u'No du Piaf', unique=True )
origin_city = models.ForeignKey( City )
class PiafTrans( models.Model ):
ttype = models.IntegerField()
date = models.DateTimeField()
piafSerial = models.ForeignKey( PiafInfo )
admin.py:
class PiafInfoAdmin( admin.ModelAdmin ):
list_display = ('no', 'origin_city',)
list_filter = ['origin_city', ]
ordering = ('no',)
search_fields = ('no',)
admin.site.register( PiafInfo, PiafInfoAdmin )
class PiafTransAdmin( admin.ModelAdmin):
list_display = ('date', 'piafSerial', 'ttype', )
date_hierarchy = 'date'
list_filter = ('ttype')
search_fields = ('piafSerial', )
admin.site.register( PiafTrans, PiafTransAdmin )
django 1.3.8 pre-alfa(最新的1.3分支)
和以下代码:
startDate = datetime.today()
endDate = datetime.today()
piafInfos = PiafInfo.objects.all().distinct()
piafInfos = piafInfos.filter( piaftrans__date__range=(startDate,endDate) ).distinct()