【发布时间】:2019-11-04 13:01:55
【问题描述】:
models.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 })
views.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() 有问题。不知道是什么
【问题讨论】:
标签: python django django-models django-signals