2014-11-24 74 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后将把它与正确的项目联系起来。