Django tastypie save reverse GenericForeignKeyField



Django Tastypie可以保存相关对象,即使有反向关系。

但是Django Tastypie能够保存GenericForeignKeyField的反向关系吗?

我的资源(不是满的,但只有重要的),

class AreaResource(ModelResource):
    tripl3user = fields.ManyToManyField(
        'tripl3sales.api.resources.area.Tripl3UserResource',
        'tripl3user',
        related_name='area',
        full=True
    )
class Tripl3UserResource(ModelResource):
    content_type = fields.ForeignKey(
        'tripl3sales.api.resources.contenttype.ContentTypeResource',
        'content_type'
    )
    content_object = GenericForeignKeyField({
        Area : AreaResource
        }, 'content_object')

我的models.py

class Area(models.Model):
    name = models.CharField(max_length=50, unique=True)
    tripl3user = generic.GenericRelation('Tripl3User')
class Tripl3User(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

是否可以保存泛型外键的反向关系?如果是这样,那该怎么做?数据是什么样的?

终于我得到了答案。

在具有 content_typeobject_id 的资源中,没有必要声明content_type content_object就足够了。对于related_name,我们不使用 area ,我们使用 content_object .

所以,我 resources.py 应该是,

class AreaResource(ModelResource):
    tripl3user = fields.ManyToManyField(
        'tripl3sales.api.resources.area.Tripl3UserResource',
        'tripl3user',
        related_name='content_object',
        full=True
    )
class Tripl3UserResource(ModelResource):
    content_object = GenericForeignKeyField({
        Area : AreaResource
    }, 'content_object')

希望这对其他人有所帮助。

相关内容

  • 没有找到相关文章

最新更新