在Django中保存时,使用ForeignKey自动创建对象

时间:2017-10-22 11:39:21

标签: python django

我遇到了Django自动创建对象的问题。请帮帮我。 我有一个模型阿凡达

class Avatar(models.Model):
    owner = models.ForeignKey(User, related_name='avatar_owner')
    photoset = models.ForeignKey(PhotoSet, null=True)
    image = models.ImageField(max_length=1024, upload_to=avatar_file_path)

和模型

class PhotoSet(models.Model):
   title = models.CharField(_('title'), max_length=200, null=True)

我想在使用null photoset保存模型Avatar时创建一个def,它会自动get_or_创建一个具有特定标题的Photoset。我做了这样的def,但是没有用。

@transaction.atomic
def create_default_photoset(self, *args, **kwargs):
    if self.photoset is None:
        self.photoset, _ = Photoset.objects.get_or_create(title=self.id)

    super(Avatar, self).create_default_photoset(*args, **kwargs)

我对这个def有误吗?我该如何解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:0)

def save(self, *args, **kwargs):
    if self.id is None:
        saved_image = self.image
        self.image = None
        super(Avatar, self).save(*args, **kwargs)
        self.image = saved_image
    if self.photoset is None:
        self.photoset, _ = Photoset.objects.get_or_create(title='test')
        super(Avatar, self).create_default_photoset(*args, **kwargs)

    super(Avatar, self).save(*args, **kwargs)

@Igor:这是我的全部代码