古典的な問題があるかもしれませんが、スニペットが見つかりませんでした。django - メソッドによるクエリセットの再帰的順序
このモデルをフルネームでソートしたいと思います。
class ProductType(models.Model):
parent = models.ForeignKey('self', related_name='child_set')
name = models.CharField(max_length=128)
def get_fullname(self):
if self.parent is None:
return self.name
return u'%s - %s' % (unicode(self.parent), self.name)
fullname = property(get_fullname)
私は無限ループエラーを持って、 "親" で並べ替えてみました。 "parent__id"はうまくソートされませんでした。
文字列フィールドの連結にannotate()を使用する方法を理解できませんでした。
私はソート()でカスタムマネージャを追加しましたが、それはリストオブジェクトを返し、動作するように私のforms.ModelChoiceFieldを防ぐことができます。
はここでソート
def all(self):
return sorted(super(ProductTypeManager, self), key=lambda o: o.fullname)
djangonicジャングルの中で他に何があるのか? ご協力いただきありがとうございます。
これは、order_by( 'parent__id')のように、奇妙な動作をします。 – leplatrem
「奇妙な動作」は、正確にはどういう意味ですか?それは間違っている特定のものであなたの質問を更新できますか? –
私はそれがうまくいきません:http://pastebin.com/m3af438ac それは矛盾していることが知られています:http://code.djangoproject.com/ticket/7101#comment:1 – leplatrem