2016-12-18 17 views
0

オブジェクトの更新中に外部キーをnullに設定する必要があります。ここでTastypie外部キーがnullに設定されています

は、モデルである:ここでは

class Task(models.Model): 
    parent_milestone = models.ForeignKey("Milestone", null=True, blank=True) 
    parent_task = models.ForeignKey("Task", null=True, blank=True) 

    name = models.CharField(max_length=256) 
    description = models.TextField(blank=True, null=True) 
    deadline = models.DateTimeField(blank=True, null=True) 
    priority = models.IntegerField(default=2) 

    done = models.BooleanField(default=False) 

    def __unicode__ (self): 
     return self.name 

はtastypieリソースです:

class TaskResource(ModelResource): 
    subtasks = fields.ToManyField('self', 'task_set', full=True, readonly=True) 

    parent_milestone = fields.ToOneField(MilestoneResource, 'parent_milestone', null=True, full=False) 
    parent_task = fields.ToOneField('self', 'parent_task', null=True, full=False) 

... 

    def obj_update(self, bundle, **kwargs): 
     bundle = super(TaskResource, self).obj_update(bundle, **kwargs) 

     bundle.data['name'] = "test" 
     bundle.data['parent_milestone'] = None <-- error here 

     return self.obj_create(bundle, **kwargs) 

名が更新された参照を更新中(任意の更新されたオブジェクトは、名前 "test" を取得します)。

しかしparent_milestoneを更新するときに、私はこのエラーを取得:

すべてのヘルプ

してください " 'NoneType' オブジェクトには属性 'parent_milestone' を持っていませんか"?

答えて

0

まず、obj_updateをスーパーで行い、obj_createの後に、あなたが期待していることはありますか?あなただけのparent_milestoneを更新し、上書きしたい場合には

、あなたが行うことができます:

class TaskResource(ModelResource): 
    .... 
    def obj_update(self, bundle, **kwargs): 

     bundle.data['name'] = "test" 
     bundle.data['parent_milestone'] = None # now this will be override 

     return super(TaskResource, self).obj_update(bundle, **kwargs) 
+0

ふう!私のために働いた=) 多くのありがとう、あなたは私の多くを助けた) – KaronatoR

関連する問題