2014-11-24 81 views
0

我正在用正確的方式太糊塗使用related_name在Django tastypie ..Django的Tastypie 1-1 related_name

這裏是我的代碼說明..

在models.py

class Item: 
    #some fields 

class ItemAddOn: 
    item = models.ForeignKey(Item) 

在api.py

class ItemResource(ModelResource): 
    itemAddOn = fields.ToOneField('api.ItemAddOnResource', 
           'itemAddOn',related_name="item") 
    class Meta: 
    #General Tasypie Meta code 

class ItemAddOnResource(ModelResource): 
    item = fields.ToOneField(ItemResource, 'item', related_name='itemAddOn') 

    class Meta: 
    #General Tasypie Meta code 

我基本上要創建ItemAddOnResource後。當我創建該帖子時,我希望它自動與該項目相關聯。但是通過這段代碼,即使我使用特定的項目ID爲ItemAddOnResource創建了一個帖子,ItemResource中的字段仍然爲空。

回答

0

好吧,我想通了這個問題,可能是有益的另外一個人..

由於這是一個1-1的關係,我不應該一直在使用ForeignKey的擺在首位。這將解決這個問題。

models.py:

class Item: 
    #some fields 

class ItemAddOn: 
    item = models.OneToOneField(Item) 

api.py:

class ItemResource(ModelResource): 
    itemAddOn = fields.ToOneField('api.ItemAddOnResource', 
           'itemAddOn',related_name="item") 
    class Meta: 
    #General Tastypie Meta code 

class ItemAddOnResource(ModelResource): 
    item = fields.ToOneField(ItemResource, 'item', related_name='itemAddOn') 

    class Meta: 
    #General Tastypie Meta code 

這將使職位發生無論哪種方式,在ItemResource後會創建一個新的itemAddOn,並在itemAddOn後將把它與正確的項目聯繫起來。