我遵循@Yauhen Yakimovich 在这个问题中使用的方法:
属性适用于 django 模型字段吗? https://stackoverflow.com/questions/1454727/do-properties-work-on-django-model-fields?lq=1
拥有一个模型字段,该模型字段是不同模型的计算。
问题:
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]
如果您遇到类似的错误,请通过视图检查是否有任何可能调用该属性的内容。属性将不再在数据库级别起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)