Django вкусно pie сохранить реверс 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')

Можно ли сохранить обратную связь общего внешнего ключа? Если так, то как это сделать? Как выглядят данные?

1 ответ

Наконец я получил ответ.

На ресурсе, который имеет content_type а также object_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')

Надеюсь, что это поможет другим.

Другие вопросы по тегам