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')
Надеюсь, что это поможет другим.