2010-11-11 67 views
0

我試圖通過其通用名有關訂購查詢集通過一個通用的外鍵字段訂購一個QuerySet

Item.objects.order_by('content_object__name') 

我已經在Django以下型號:

from django.db import models 
from django.contrib.contenttypes.models import ContentType 
from django.contrib.contenttypes import generic 


class Item(models.Model): 
    content_type = models.ForeignKey(ContentType, null=True, blank=True) 
    object_id = models.PositiveIntegerField(null=True, blank=True) 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 

    def __unicode__(self): 
     return unicode(self.content_type) 


class Work(models.Model): 
    name = models.CharField(max_length=50, blank=True) 

    def __unicode__(self): 
     return unicode(self.name) 

    def save(self): 
     super(Work, self).save() 
     item = Item(content_object=self) 
     item.save() 


class Event(models.Model): 
    name = models.CharField(max_length=50, blank=True) 

    def __unicode__(self): 
     return unicode(self.name) 

    def save(self): 
     super(Event, self).save() 
     item = Item(content_object=self) 
     item.save() 

它是唯一可能去做這個?你將如何實現它?

非常感謝!

回答

0

您不能這樣做,因爲content_object在數據庫中表示爲content_typeobject_id,所以您只能通過其中一個進行排序!

相關問題