将TastyPie ModelResource添加到由Django OneToOne关系连接的另一个ModelResource

时间:2012-02-01 20:39:18

标签: django tastypie

我有两个通过OneToOne关系连接的django模型,我很难看到如何在Tastypie ModelResource中连接它们。

我会借用Including child resources in a Django Tastypie API中定义的模型,而不是发布一些新模型,以显示我不知道如何做到这一点。使用TicketTicketComment模型,假设TicketComment是这样的:

class TicketComment(models.Model):
    ticket = models.OneToOneField('Ticket')

而不是使用ForeignKey字段。我已经看过使用ToManyFieldToOneField的文档以及上述帖子。但由于Ticket未引用TicketComment,因此在我的情况下似乎不起作用。我想要做的是能够创建一个列出TicketCommentTicket的API。 Tastypie正确地抛出了一个例外,即TicketComment模型中不存在Ticket个字段。有没有办法将好的序列化TicketComment纳入Ticket API?

1 个答案:

答案 0 :(得分:1)

有一个attribute arg告诉tastypie它应该使用哪个字段。票证以反向关系引用TicketComment。默认情况下,它将是一个小写的模型名称,因此在您的示例中它将是ticketcomment。但我建议您明确在模型中设置related_name属性,以便了解它的连接方式。

所以在你的tastypie中你应该这样做:

class TicketResource(ModelResource):
   comment = fields.OneToOneField('TicketCommentResource', 'ticketcomment')

它会正常工作。 OneToOneField中的第二个arg是一个属性。