如何通过触发django post_save信号创建同一模型的多个对象
我正在尝试创建该模型的52个对象(每年相应的52周): 我的信号函数是这样的(当我这样做时,我只得到一个对象,而不是预期的52;我只得到第1周):如何通过触发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,
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)