我基本上是试图做的是在这个问题上所描述的相反:Django: filtering order_by a generic relation如何在Django中order_by泛型关系?
class Translation(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object = generic.GenericForeignKey('content_type', 'object_id')
field = models.CharField(max_length=64) #field from the translated model
language = models.CharField(max_length=8, choices=settings.LANGUAGES, verbose_name=_("language"))
text = models.TextField() #translation
class Category(models.Model):
translations = generic.GenericRelation(Translation)
name = models.CharField(max_length=128, verbose_name=_("Name"))
slug = models.SlugField(blank=True, default="", verbose_name=_("Slug"))
我想检索所有的类别名称翻译和秩序。类似这样的:
Translation.objects.all().order_by('object__name')
但是这不起作用,因为object
不是数据库中的列。试图订购content_type__name
也不起作用。
查询,如果有什么像产品组别另一类也已翻译为一个通用关系,但它没有列'名称'。当你打电话给order_by('object__name')时,你是否也想要这些对象? –
好点。我期望的功能在其他应用程序中不会很可重用,但幸运的是,对于我的项目,我永远不会有与翻译相关的类没有名称字段。 –
然后我建议你不要使用GenericForeignKey,而应该使用一个简单的ForeignKey。您可以使用本手册https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey查看它的工作原理。 –