Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:通过泛型关系筛选顺序_Python_Django_Postgresql - Fatal编程技术网

Python Django:通过泛型关系筛选顺序

Python Django:通过泛型关系筛选顺序,python,django,postgresql,Python,Django,Postgresql,我有两门课: 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) #f

我有两门课:

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"))
有没有一种方法可以通过翻译对类别进行排序?文本通过当前语言过滤排序?如果我使用

Category.objects.all().order_by("translations__text")
我得到了所有翻译的分类,而不仅仅是当前的语言。我想,我所定义的是以某种方式按集合过滤顺序(只使用给定语言的翻译)?有没有办法做到这一点

DB=PostgreSQL

谢谢你的帮助

你是这个意思吗

Category.objects.filter(translations__language="English").order_by("translations__text")
你是这个意思吗

Category.objects.filter(translations__language="English").order_by("translations__text")
试试这个:

Category.objects.filter(translations__language='en').order_by("translations__text")
试试这个:

Category.objects.filter(translations__language='en').order_by("translations__text")

重复是不可避免的。这是Django为泛型关系上的order by子句生成的SQL的结果。见票证:

即使在后备箱里也没有解决,车票已经3年了,14个月没有修改过,所以我不会屏住呼吸

更新*** 根据参考错误报告,参考错误已于2013年初修复。从我最初的测试来看,在本文中对推荐答案调用distinct()似乎会返回正确的查询集

Category.objects.filter(translations__language='English').order_by('translations__text').distinct()

重复是不可避免的。这是Django为泛型关系上的order by子句生成的SQL的结果。见票证:

即使在后备箱里也没有解决,车票已经3年了,14个月没有修改过,所以我不会屏住呼吸

更新*** 根据参考错误报告,参考错误已于2013年初修复。从我最初的测试来看,在本文中对推荐答案调用distinct()似乎会返回正确的查询集

Category.objects.filter(translations__language='English').order_by('translations__text').distinct()

几乎。但是,此解决方案返回无法使用distinct()筛选的重复项:-/GREST。但是,此解决方案返回无法使用distinct()筛选的重复项:-/yup,除了重复项之外,这是一个很好的解决方案。有办法摆脱它们吗?是的,除了重复之外,这是一个很好的解决方案。有办法摆脱他们吗?