如何通过触发django post_save信号创建同一模型的多个对象

如何通过触发django post_save信号创建同一模型的多个对象,django,python-3.6,django-signals,Django,Python 3.6,Django Signals,我正在尝试创建该模型的52个对象(每年相应的52周): 我的信号函数是这样的(当我这样做时,我只得到一个对象,而不是预期的52;我只得到第1周): from django.db.models.signals import post_save from django.dispatch import receiver from main_app.models import Master from memo.models import WeeklyMemo @receiver(post_save,

我正在尝试创建该模型的52个对象(每年相应的52周):

我的信号函数是这样的(当我这样做时,我只得到一个对象,而不是预期的52;我只得到第1周):

from django.db.models.signals import post_save
from django.dispatch import receiver
from main_app.models import Master
from memo.models import WeeklyMemo

@receiver(post_save, sender=Master)
def create_weekly_memo_objects(sender, instance,  **kwargs):
    for week in range(1, 53):
        WeeklyMemo.objects.create(master=instance, week_of_year=week)
而且当我将for循环放入外部范围时,(我只得到一个对象,而不是预期的52个;我只得到52周)


我可以做些什么来解决这个问题,以便创建52个
WeeklyMemo
类的对象?

post\u save是在save方法之后工作。因此,您只能在post_保存中获取最后创建的实例。如果要保存所有对象,则不能在post_save中保存。
OneToOne
字段是这样写的:一个
weeklymmo
只能有一个
Master
,反之亦然。因此,除非将关系更改为一对多,否则无法创建52个与同一
主对象相关的对象。@dirkgroten,它当时没有触发,我将其更改为
模型。ForeignKey
,它似乎按预期工作
from django.db.models.signals import post_save
from django.dispatch import receiver
from main_app.models import Master
from memo.models import WeeklyMemo

@receiver(post_save, sender=Master)
def create_weekly_memo_objects(sender, instance,  **kwargs):
    for week in range(1, 53):
        WeeklyMemo.objects.create(master=instance, week_of_year=week)
for week in range(1, 53):
    @receiver(post_save, sender=Master)
    def create_weekly_memo_objects(sender, instance,  **kwargs):
        WeeklyMemo.objects.create(master=instance, week_of_year=week)