0

我有两个模型。

家长

class Parent(models.Model):
    ... code

孩子

class Child(models.Model):
    ... code
    parent = models.ForeignKey(Parent, related_name="parents")

和一个 API

class ParentResource(ModelResource):
    children = fields.ToManyField("project.module.api.ChildResource", 'children', related_name='parents', null=True, blank=True, full=True)

    class Meta:
        queryset = Parent.objects.all()

class ChildResource(ModelResource):
    parent = fields.ForeignKey("project.module.api.ParentResource", 'parent')

    class Meta:
        queryset = Child.objects.all()

当我尝试访问父资源时,数组为children空。欢迎任何帮助澄清。

我在这里和这里查看了以前的答案以及这里文档但我仍然无法看到发生了什么。

谢谢

4

1 回答 1

1

从您的代码:

    parent = models.ForeignKey(Parent, related_name="parents")

related_name设置模型上的属性名称Parent(在美味派资源上也是如此),默认为child_set,您现在将其设置为parents. 这意味着Parent模型pChild在名为 的属性处具有对象的查询集parents,这显然是不正确的。

此外,ChildResource父关系的related_name 与相关模型上的属性不匹配。

以下是每个应该可以工作的更正版本:

楷模

class Parent(models.Model):
    ... code

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

资源

class ParentResource(ModelResource):
    children = fields.ToManyField("project.module.api.ChildResource", 'children', related_name='parent', null=True, blank=True, full=True)

    class Meta:
        queryset = Parent.objects.all()

class ChildResource(ModelResource):
    parent = fields.ForeignKey("project.module.api.ParentResource", 'parent')

    class Meta:
        queryset = Child.objects.all()
于 2013-10-25T04:47:26.263 回答