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,除了重复项之外,这是一个很好的解决方案。有办法摆脱它们吗?是的,除了重复之外,这是一个很好的解决方案。有办法摆脱他们吗?