Tastypie遵循相反的关系 - 不使用related_name

时间:2013-10-25 00:00:24

标签: django tastypie

我有两个模特。

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的数组为空。欢迎任何帮助澄清。

我查看了以前的答案herehere以及文档here,但我仍然无法看到发生了什么。

谢谢

1 个答案:

答案 0 :(得分:1)

从你的代码:

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

related_nameParent模型上设置属性名称(在tastypie资源上也是如此),默认值为child_set,您现在将其设置为{{1 }}。这意味着parents模型Parent将在名为p的属性上具有Child个对象的查询集,这显然不对。

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

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

模型

ChildResource

资源

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

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