37
私は現在Djangoを学んでおり、私のモデルの中には、特定の方法でフォーマットされた値を取得するためのカスタムメソッドがあります。 order_by()でモデルのプロパティとして定義したこれらのカスタムメソッドの1つの値を使用することは可能ですか?order_by()のDjangoカスタムモデルメソッドプロパティを使用
次に、プロパティの実装方法を示す例を示します。私が行うことができます。このモデルでは
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True, verbose_name='e-mail')
def _get_full_name(self):
return u'%s %s' % (self.first_name, self.last_name)
full_name = property(_get_full_name)
def __unicode__(self):
return self.full_name
:
>>> Author.objects.all()
[<Author: John Doh>, <Author: Jane Doh>, <Author: Andre Miller>]
>>> Author.objects.order_by('first_name')
[<Author: Andre Miller>, <Author: Jane Doh>, <Author: John Doh>]
しかし、私は行うことはできません。
>>> Author.objects.order_by('full_name')
FieldError: Cannot resolve keyword 'full_name' into field. Choices are: book, email, first_name, id, last_name
このようなカスタムプロパティにORDER_BY使用する正しい方法でしょうか?
たぶん 'F()'オブジェクトが、この場合には動作しますが。テストしていませんが、 'F( 'first_name')+ '' + F( 'last_name')'で注文していますか? –
_multiple_カスタムフィールドを 'sorted'でソートするには、https://wiki.python.org/moin/HowTo/Sortingで説明されているようにkey = attrgetterを使用できます。 – Chirael