Django一对多获取所有底层记录
我正在创建一个带有数据库的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
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