我正在使用@Yauhen Yakimovich在此问题中使用的方法:
具有模型字段,该模型字段是对不同模型的计算。
FieldError: Cannot resolve keyword 'rating' into field. Choices are: _rating
Run Code Online (Sandbox Code Playgroud)
当我尝试访问它时,rating模型字段inst被我的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']
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
关于如何正确隐藏rating字段和定义@property技术的任何想法?
我正在使用查询order_by()来呼叫rating。order_by()在数据库级别,并且不了解我的财产。灵魂,请使用Python进行排序:
sorted(Restaurant.objects.filter(category=category[0]), key=lambda x: x.rating)[:5]
Run Code Online (Sandbox Code Playgroud)
通过使用解决sorted()
我使用 order_by() 的查询来调用评级。order_by() 位于数据库级别,不知道我的属性。好吧,改用Python来排序:
sorted(Restaurant.objects.filter(category=category[0]), key=lambda x: x.rating, reverse=True)[:5]
Run Code Online (Sandbox Code Playgroud)
如果您遇到类似的错误,请通过视图检查是否有任何可能调用该属性的内容。属性将不再在数据库级别起作用。
| 归档时间: |
|
| 查看次数: |
7465 次 |
| 最近记录: |