django - 如何通过触发 django post_save 信号创建相同模型的多个对象
问题描述
我正在尝试创建此模型的 52 个对象(每年对应的 52 周):
from django.db.models import OneToOneField, TextField, IntegerField, Model, CASCADE
from main_app.models import Master
class WeeklyMemo(Model):
master = OneToOneField(Master, on_delete=CASCADE)
week_of_year = IntegerField(null=True)
comments = TextField(null=True)
我的信号功能是这样的(当我这样做时,我只得到一个对象而不是预期的 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 周)
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)
我能做些什么来解决这个问题,以便WeeklyMemo
创建 52 个类对象?
解决方案
推荐阅读
- r - 如何通过在查询编辑器中运行 R 脚本在 Power BI 中添加列
- excel - 尝试引用不同的工作表时,正在从活动工作表中提取数据
- javascript - javascript forEach 似乎是非阻塞的
- c - 有没有办法在 Windows 中使用由 CreateProcessAsUser 创建的 cmd 自动完成?
- javascript - 如何使用 KnockoutJS 插入 HTML 组件
- kubernetes - 我只能在 kubernetes 中更改一个 pod 吗?
- python - 如何在Linux中使用名为“imwrite”的python opencv函数将捕获的图像文件保存在USB中
- java - 更多内存优化版本的 Bitmap.createScaledBitmap?
- python - 如何使用 python/pygame 在 Windows 7 上关闭某些像素
- android - 如何使用 Kotlin 从 android 中的资产中读取 json 文件?