Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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:反向相关字段出现奇怪错误_Django - Fatal编程技术网

django:反向相关字段出现奇怪错误

django:反向相关字段出现奇怪错误,django,Django,这是我的模型 class UserAward(models.Model): user = models.ForeignKey(User, related_name='awards') award = models.CharField(max_length=255) week = models.SmallIntegerField(default=0) year = models.IntegerField(default=0) points_gained =

这是我的模型

class UserAward(models.Model):
    user = models.ForeignKey(User, related_name='awards')
    award = models.CharField(max_length=255)
    week = models.SmallIntegerField(default=0)
    year = models.IntegerField(default=0)
    points_gained = models.IntegerField(default=0)
    timestamp = models.DateTimeField(auto_now=True)
当我给出这个:

users=User.objects.filter(awards\uuu award='level up',awards\uuuu week=prev\u wk,awards\uuuuuu year=prev\u year)。订购人('-profiles\uu level')

我得到这个错误:

相关字段的查找无效:年份

如果我删除
过滤器(奖励年=上一年)
查询工作正常

问题出在哪里?

试试这个:

users = User.objects.filter(awards__award='level up').filter(awards__week=prev_wk).filter(awards__year__exact=prev_year).order_by('-profiles__level')
基本上,django使用
\uu year
从日期对象中提取年份字段,它认为您希望从该字段中提取年份

试试以下方法:

users = User.objects.filter(awards__award='level up').filter(awards__week=prev_wk).filter(awards__year__exact=prev_year).order_by('-profiles__level')

基本上,django使用
\u year
从日期对象中提取年份字段,它认为您希望从该字段中提取年份

您最近是否将
year
添加到模型中?您需要进行数据库迁移,以确保表中也有该列。否则,
prev_year
的类型和值是什么?prev_year是2012年。上一年实际上是前一周的一年。将进行数据库迁移,尽管
year
来自start,但您不使用DateField并单独存储年/周是有原因的吗?没有特殊原因。我想如果我把所有的值分开,调试会更容易,因为很多外部脚本每周运行一次您最近是否向模型中添加了
year
?您需要进行数据库迁移,以确保表中也有该列。否则,
prev_year
的类型和值是什么?prev_year是2012年。上一年实际上是前一周的一年。将进行数据库迁移,尽管
year
来自start,但您不使用DateField并单独存储年/周是有原因的吗?没有特殊原因。我想如果我把所有的值分开,调试会更容易,因为很多外部脚本每周运行一次