Django一对多获取所有底层记录

Django一对多获取所有底层记录,django,django-models,django-rest-framework,django-serializer,Django,Django Models,Django Rest Framework,Django Serializer,我正在创建一个带有数据库的django应用程序,该数据库包括以下表格: 我创建了以下模型: class Group(models.Model): id = models.AutoField(primary_key=True, editable=False) text = models.CharField(db_column='Text', max_length=4000) class Meta: db_table = 'Group' class Fi

我正在创建一个带有数据库的django应用程序,该数据库包括以下表格:

我创建了以下模型:

class Group(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    text = models.CharField(db_column='Text', max_length=4000)

    class Meta:
        db_table = 'Group'


class Filters(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    text = models.CharField(db_column='Text', max_length=4000)
    group_id = models.ForeignKey(Group, on_delete=models.CASCADE,
                                 db_column='GroupId')

    class Meta:
        db_table = 'Filters'
目标是调用端点并返回包含所有组和基础筛选器的列表。有可能做到这一点吗?如果可能,我希望它在序列化程序类中

我知道我可以得到一组过滤记录,但这也可能是另一种方式吗

class Group(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    text = models.CharField(db_column='Text', max_length=4000)

    class Meta:
        db_table = 'Group'


class Filters(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    text = models.CharField(db_column='Text', max_length=4000)
    group = models.ForeignKey(Group, on_delete=models.CASCADE,
                                 db_column='GroupId', related_name='filters') # not group_id
这只是说,Filters有.group,但group有.Filters(related\u name),如果您没有指定
related\u name
,默认情况下它将是
model\u qs
,因此它应该是
Filters\u qs

一些补充说明

  • 类名应为单数

  • Django通过添加“s”来创建复数名称,在您的情况下,它将创建过滤器,您必须指定一个
    详细的名称\u复数
    (更无用的代码)

  • 您不需要指定db数据、列名或其他任何内容,除非您正在创建一个已经存在的后端或需要它的东西

  • 它是组而不是组id,我们都知道在SQL中它是组id,但是,这是python,您可以访问整个组实例,然后您可以
    instance.id
    instance.pk
    获取它

谢谢!附加的笔记非常有用,我还在学习Django。但是我如何才能从端点返回一个带有json底层过滤器的组列表呢?看,我使用了是的,这应该是相同的,我实际上忘记了您使用的是DRFT这就是我坚持使用django的原因,但是drf中的序列化程序功能更强大,更易于维护,特别是对于嵌套模型