6

この質問で@Yauhen Yakimovichが使用する方法に従っています。

プロパティはdjangoモデルフィールドで機能しますか?

異なるモデルの計算であるモデル フィールドを持つこと。

問題:

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

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']

ヤウヘンの答えのモデル:

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か?

4

2 に答える 2

3

を使用して解決sorted()

order_by() を使用してクエリを使用して評価を呼び出していました。order_by() はデータベース レベルであり、自分のプロパティを認識していません。Soultion、代わりに Python を使用して並べ替えます。

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

同様のエラーが発生した場合は、プロパティを呼び出している可能性のあるものがないかビューを確認してください。プロパティは、データベース レベルでは機能しなくなります。

于 2013-08-27T03:52:42.350 に答える