python - save() 缺少 1 个必需的位置参数:使用 Django Signal Dispatcher 时出现“self”错误
问题描述
模型.py
class es_event(models.Model):
#some attributes
reg_applicants = models.FilePathField(path=None)
ev_admin = models.ForeignKey('es_user',related_name='events',on_delete=None)
slug = models.SlugField(max_length=250)
def save(self, *args, **kwargs):
self.slug = slugify(self.ev_name)
return super(es_event, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('event_detail', kwargs={'id': self.id, 'slug': self.slug })
视图.py
class CreateEventView(LoginRequiredMixin,CreateView):
login_url = "/login/"
model = es_event
fields = ['ev_name','ev_venue','ev_description','ev_date','registrant_name','registrant_age','registrant_phone','registrant_email','registrant_institution']
def form_valid(self, form):
form.instance.ev_admin = self.request.user.es_user
return super(CreateEventView, self).form_valid(form)
现在,当向 es_event 添加新行时。我想用路径(包括文件名)设置reg_applicants字段
例如:如果es_event.id为 5,则文件名应为Registered_5.csv
为此,我在models.py中创建了这个 Signal
@receiver(post_save, sender=es_event)
def set_csv_path(sender, **kwargs):
rel_path = "reg_csv/Registered_{}.csv".format(sender.id)
path = os.path.join(settings.MEDIA_ROOT,rel_path)
sender.reg_applicants = path
sender.save()# error statement
这给了我这个错误
save() missing 1 required positional argument: 'self'
我认为信号调度程序函数set_csv_path()有问题。我不知道它是什么
解决方案
您使用了错误的参数。sender
是信号连接到的类。您还需要接受实例参数。
@receiver(post_save, sender=es_event)
def set_csv_path(sender, instance, **kwargs):
rel_path = "reg_csv/Registered_{}.csv".format(instance.id)
path = os.path.join(settings.MEDIA_ROOT,rel_path)
instance.reg_applicants = path
instance.save()
推荐阅读
- c++ - 即使没有错误,我的精灵也没有绘制?
- azure - 在 Exchange Online 上运行 Add-DistributionGroupMember PS cmdlet 时出现权限错误
- azure - 如何检索部署到 ACI 的训练有素的模型 docker 映像?
- mongoose - 如何使用 Mongoose 从数据库填充到不同的字段?
- javascript - 如何清理 Nuxt js 额外的 div 容器?
- google-apps-script - 从 Google 工作表插件将 Appscript 部署为 Webapp
- c - 将一个 int 乘以一个 int 得到一个浮点数返回 0 语言是 C
- linux - Dup2() 使用和输出重定向
- flutter - 当我启动我的颤振应用程序时,我的登录屏幕没有加载
- javascript - 如何按特定日期范围对 MongoDB 记录进行分组?