姜戈。主模型保存后的相关模型 returns None

Django. Related model returns None after primary model save

我有两个模型:ItemPhotoItemPhoto 的外键,因此一个项目可以连接多张照片,这很常见。

项目 class:

class Item(models.Model):
name = models.CharField('Item Name',
    max_length = 150,
    null = False,
    blank = False
)
description = RichTextField('Item Description')

照片 class:

class Photo(models.Model):

path_and_rename = PathAndRename()

photo = models.ImageField(upload_to = path_and_rename, blank = True, null = True)
item = models.ForeignKey('Item', related_name = 'photo_set')

当我用一堆照片创建新的 Item 条目时,我想做一些额外的事情:启动用于索引和电子邮件通知用户的异步任务 - some_async_task()。我正在尝试通过 Item.save() 方法来做到这一点:

    def save(self):
    super(Item, self).save()

    some_async_task.delay(self.id)


@task(name="something")
def something(item_id):
    print Item.objects.get(pk=item_id).photo_set.first().photo.url

Item 模型的 save() 方法似乎正是我所需要的,但问题是即使在调用 super() 之后我也无法获取相关照片条目的数据,因为这种关系不存在.

在创建项目条目并且关联所有相关照片条目后,运行 方法的最佳方法是什么?

post_save 信号无法解决问题。

由于Item是主模型,照片是相关的,也就是说Item保存的时候不一定和照片有关系。

要知道这是什么时候发生的: "to run method after Item entry was created and all related Photo entries were related" 取决于您的业务逻辑。

在您看来,您是否知道添加完所有照片的确切时间?

如果是:然后在您的视图代码中当场调用任务。

如果没有: