Django向后关系

Alq*_*raf 0 python django

我正在为应用程序设置webservices,我有以下模型:

class Parent(models.Model):
    ...
class Child(models.Model):
    parent = models.ForeignKey(Course)
    ...
Run Code Online (Sandbox Code Playgroud)

关系是一对多(1父,多子)现在,我想获取所有父对象及其特定的子对象并将其作为JSON请求发送.是否有可能这样做而不必首先得到所有"孩子"并迭代他们寻找与特定父母相关的那些?我认为这对于真正的大型数据库来说效率极低,而且"Childs"不会在其他"Parents"中重复出现

非常感谢你

knb*_*nbk 11

Django中的每个关系都会自动将其反向关系添加到模型中.在一个ForeignKeyManyToManyField那个关系包含几个对象的情况下.在这种情况下,默认属性名称设置为<model>_set,因此在这种情况下child_set.这是一个经理,可以这样使用,例如迭代所有孩子:

for child in parent.child_set.all():
    do_something()
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下属性指定用于反向关系的属性名称related_name:

class Child(models.Model):
    parent = models.ForeignKey(Parent, related_name='children')

for child in parent.children.filter(some_field=True):
    do_something()
Run Code Online (Sandbox Code Playgroud)

有关后续关系的文档中的更多内容以及如何实现后向关系.