DjangoモデルとPythonプロパティ

Source python django django-models

次のように、pythonプロパティを使用してDjangoモデルを設定しようとしました。
class Post(models.Model):
    _summary = models.TextField(blank=True)
    body = models.TextField()

    @property
    def summary(self):
        if self._summary:
            return self._summary
        else:
            return self.body

    @summary.setter
    def summary(self, value):
        self._summary = value

    @summary.deleter
    def summary(self):
        self._summary = ''

これまでのところ順調で、コンソールではsummaryプロパティを問題なく操作できます。しかし、Post(title="foo", summary="bar")のように、これを使ってDjango-yを実行しようとすると、うまくいきます。 DjangoをPythonプロパティとうまく連携させる方法はありますか?
推奨答え
残念ながら、DjangoモデルはPythonプロパティとうまく連携しません。それが機能する方法では、ORMはQuerySetフィルターのフィールドインスタンスの名前のみを認識します。

フィルタでsummaryを参照することはできません。代わりに、_summaryを使用する必要があります。これは非常に手間がかかります。たとえば、マルチテーブルクエリでこのフィールドを参照するには、次のようなものを使用する必要があります。
User.objects.filter(post___summary__contains="some string")

プロパティサポートの詳細については、https://code.djangoproject.com/ticket/3148を参照してください。

関連記事

Jacskonパーサー:認識されないトークン 'tieheT': 'null'、 'true'、または 'false'を予期していました
テキストエディタを書くときにデータを保存する良い方法
次元数の異なる配列を追加する
validators = [MinValueValidator]はDjangoでは機能しません
imageでの正方形の検出