【问题标题】:Django select distinct only has related objects with specified foreign key idDjango select distinct 仅具有具有指定外键 id 的相关对象
【发布时间】:2016-07-20 07:07:21
【问题描述】:

我需要列出具有指定类别 ID 的相关对象的区域。

我编写的查询对所有类别都执行此操作:

models.Fedsubj.objects.filter(articles__isnull=False).distinct()

但是如何指定类别 (id_section)?

型号

class Fedsubj(models.Model):
    id = models.AutoField(primary_key=True)
    fesname = models.CharField(max_length=255)
    fessort = models.IntegerField()
    fescont = models.TextField()


class SectionArt(MPTTModel):
    id_section = models.AutoField(primary_key=True)
    title_sec = models.CharField(max_length=250)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)


class Articles(models.Model):
    id_art = models.AutoField(primary_key=True)
    title_art = models.CharField(max_length=250)
    id_section = TreeForeignKey(SectionArt, db_column='id_section')
    fesid = models.ForeignKey(Fedsubj, db_column='fesid')

【问题讨论】:

  • 您的意思是说您希望在行的某些特定属性上检查区分属性,例如 id_section.?
  • 我的意思是我想过滤我的Fedsubj(地区),所以我会得到一个Fedsubj的列表,其中有一些section_id(类别)的文章,例如5
  • 向我们展示 Fedsubj 的定义。
  • 哦,所以你只想要那些有 section_id s1、s2、s3 或 s4 文章的 Fedsubj,即文章的部分应该属于特定列表或其他东西?
  • @AnkushRaghuvanshi 这将是一个特别可选择的section_id

标签: django django-queryset


【解决方案1】:

试试这个

models.Fedsubj.objects.filter(articles__isnull=False, articles__id_section=some_sectionart_instance).distinct()

【讨论】:

  • Cannot resolve keyword 'articles_set' into field. Choices are: articles, cities, fescont, fesname, fessort, id。我也试过articles__set__id_section=category,但得到了FieldError: Related Field got invalid lookup: set
  • 这很奇怪。试试articles__id_section 而不是articles_set__id_section
  • 耶!有效。编辑你的答案,我会接受。
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 2020-07-23
  • 2011-12-21
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 2011-05-10
相关资源
最近更新 更多