37
我目前正在學習Django,並且我的一些模型有自定義方法以獲取以特定方式格式化的值。是否有可能使用我已經在order_by()模型中定義爲屬性的這些自定義方法之一的值?在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')'來排序? – 2011-12-14 20:23:48