通过通用外键字段对查询集进行排序

时间:2010-11-11 23:29:53

标签: django foreign-keys generics django-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()

是否只能这样做?你会如何实现它?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您无法执行此操作,因为content_object在数据库中表示为content_typeobject_id,因此您只能按其中一个订购!