Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 列表\触发FieldError的筛选器_Django_Django Models - Fatal编程技术网

Django 列表\触发FieldError的筛选器

Django 列表\触发FieldError的筛选器,django,django-models,Django,Django Models,在我对AdminModel做了一些更改之后,我的一个查询突然开始失败 在搜索了一点之后,我发现在我的管理模型中添加一个列表过滤器会产生FieldError,这对我来说真的很奇怪 我的模型: class PiafInfo( models.Model ): no = models.IntegerField( u'No du Piaf', unique=True ) origin_city = models.ForeignKey( City ) ... class PiafI

在我对AdminModel做了一些更改之后,我的一个查询突然开始失败

在搜索了一点之后,我发现在我的管理模型中添加一个列表过滤器会产生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 )
提出问题的查询(第二行):

这样,我得到以下错误:

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版本。

无法在此处复制。使用 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阿尔法之前(最新版本自1.3分行)

以及以下代码:

startDate = datetime.today()
endDate = datetime.today()
piafInfos = PiafInfo.objects.all().distinct()
piafInfos = piafInfos.filter( piaftrans__date__range=(startDate,endDate) ).distinct()

我已经删除了我的答案。我没有仔细阅读你的问题。很抱歉。不确定您的错误,但是您的第一个
piafInfos=models.PiafInfo.objects.all().distinct()
似乎是多余的,因为您可以组合两个调用并只使用一个。尝试使用
models.PiafInfo.objects.filter(piaftrans\uuuuu date\uuuu range=(startDate,endDate)).distinct()
我将对不同的版本进行更多的测试,看看是否有什么弹出。
startDate = datetime.today()
endDate = datetime.today()
piafInfos = PiafInfo.objects.all().distinct()
piafInfos = piafInfos.filter( piaftrans__date__range=(startDate,endDate) ).distinct()