2012-10-23 55 views
0

我有一個線程MPTT評論模型與我BlogItem模型中使用:Django的:如何創建對象,具有Tastypie

class MyComment(MPTTModel, Comment): 
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children') 
    class MPTTMeta: 
     order_insertion_by=['-submit_date'] 
    class Meta: 
     ordering=['tree_id','lft'] 

對於tastypie我做資源

class MyCommentResource(ModelResource): 

    # i tried to use this commented strings (and of course i created related resources) 
    #comment = fields.ForeignKey(CommentRosource, 'comment', null=True, full=True) 
    #site = fields.ForeignKey(SiteResource, 'site', null=True, full=True) 
    #content_type = fields.ForeignKey(ContentTypeResource, 'content_type', null=True, full=True) 
    #children = fields.ToManyField('self', 'children', null=True, full=True) 
    #content_object = GenericForeignKeyField({BlogItem: BlogItemResource}, 'content_object', null=True, full=True) 

    class Meta: 
     queryset = MyComment.objects.filter(level=0) 
     resource_name = 'myComment' 
     include_resource_uri = False 
     allowed_methods = ['get', 'post', 'put'] 
     include_resource_uri = False 
     filtering = { 
      'object_pk': ALL, 
      'level': ALL 
     } 
     authorization= Authorization() 

後,我已工作API GET請求FO MyComment模型(我可以看到所有評論(評論者的名字,註釋文本,MPTT水平,分頁等)

但是,當我試圖讓捲曲(或JS)erquest:

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"comment":"sdfsdfsdf"}' http://myhostname.com:80/api/v1/myComment/ > /tmp/err.html 

我得到錯誤「當前事務被中止,忽略,直到事務塊結束指令」或其他錯誤(「DoesNotExist在/ API/V1/myComment /否提供的異常」,「無法分配無:」 MyComment .content_type「不允許空值。」 - 但在請求我POST {「content_type」:{「id」:「15」}}或鏈接到我的api content_type,也很好)。

其他更簡單的模型(不一般的關係,但與ForeignKeys)我可以捲曲的請求並獲得「201創造」的反應,所以我覺得我有錯誤相關的「通用」意見模型

我做錯了嗎?是否有任何文檔或手冊 - 如何通過tastypie爲「通用」模型創建對象?

+0

您可以添加評論模型的來源嗎? –

+0

我沒有在MyComment模型中的任何額外的字段,我使用從contrib.Comment默認模型和MPTTModel繼承 – Friendka

回答

0

如果您使用的是內置的Comment型號,那麼GenericForeignKey不是可以爲空的,這會拋出您看到的異常。資源上的GenericForeignKeyField指定null=True,導致Tastypie允許將空值傳遞給ORM。

您可以通過它的resource_uri指定GenericForeignKeyField的值,例如{"comment":"sdfsdfsdf", "content_object": "/api/v1/blog_item/1/"}

相關問題