gpt4 book ai didi

python - Django @property 计算模型字段 : FieldError: Cannot resolve keyword

转载 作者:行者123 更新时间:2023-12-02 06:43:28 26 4
gpt4 key购买 nike

我正在遵循@Yauhen Yakimovich 在这个问题中使用的方法:

do properties work on django model fields?

拥有一个计算不同模型的模型字段。

问题:

FieldError: Cannot resolve keyword 'rating' into field. Choices are: _rating

rating 模型字段被我的 rating 属性正确隐藏和覆盖,导致我尝试访问它时出现错误。

我的模型:

class Restaurant(models.Model):    
...
...
@property
def rating(self):
from django.db.models import Avg
return Review.objects.filter(restaurant=self.id).aggregate(Avg('rating'))['rating__avg']

Yauhen 答案中的模型:

class MyModel(models.Model):
__foo = models.CharField(max_length = 20, db_column='foo')
bar = models.CharField(max_length = 20)

@property
def foo(self):
if self.bar:
return self.bar
else:
return self.__foo

@foo.setter
def foo(self, value):
self.__foo = value

关于如何正确隐藏 rating 字段并定义 @property 技术有什么想法吗?

最佳答案

使用sorted()解决

我使用 order_by() 的查询来调用评级。 order_by() 位于数据库级别,不知道我的属性。好吧,改用Python来排序:

sorted(Restaurant.objects.filter(category=category[0]), key=lambda x: x.rating, reverse=True)[:5]

如果您遇到类似的错误,请通过 View 检查是否有任何可能调用该属性的内容。属性将不再在数据库级别工作。

关于python - Django @property 计算模型字段 : FieldError: Cannot resolve keyword,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18447798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com