0

私は2つのモデルを持っています。

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と docs hereを見てきましたが、何が起こっているのかまだわかりません。

ありがとう

4

1 に答える 1

1

あなたのコードから:

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

related_nameモデルの属性名を設定しますParent(tastypie リソースでも同じことをchild_set行います)。デフォルトは で、現在は に設定していますparents。これは、ParentモデルpChildという名前の属性にオブジェクトのクエリセットを持つことを意味しますがparents、これは明らかに正しくありません。

さらに、親関係の related_name はChildResource、関連モデルの属性と一致しません。

以下は、正常に動作するはずのそれぞれの修正バージョンです。

モデル

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 に答える