У меня есть модель, в которой я хотел бы создать папку при создании модели: Модель:
class Drive(models.Model):
user = models.ManyToManyField(User)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
path = models.CharField(max_length=150, editable=False,
default='C:/Users/User/Desktop/Python/RavNet/media/storage/drives/{}'.format(str(id)))
def save(self):
super().save()
Я пытаюсь использовать сигналы, но должен признать, что это моя первая попытка когда я делаю сигнал, не следуя указаниям учебника, и даже после прочтения документации у меня трудное время.
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Drive
import os
@receiver(post_save, sender=Drive)
def create_drive(sender, instance, created, **kwargs):
if created:
os.mkdir(Drive.path)
Ничего не происходит, когда я создаю новую модель привода через администратора django. Я проверил свой код в оболочке и использовал путь-заполнитель (C: / Users / Пользователь / Рабочий стол / Python / RavNet / media / storage / drive / test), который, как я знаю, работает в сигнале при попытке отладки и дошел до того, что понял, что у меня две проблемы.
Первая: при вызове Drive.path в оболочке я получаю путь:
'C:/Users/User/Desktop/Python/RavNet/media/storage/drives/<django.db.models.fields.UUIDField>'
Вместо путь с фактическим идентификатором, как я и надеялся. Как мне решить эту проблему?
Во-вторых, мой сигнал не работает. Похоже, что его не называют. Что я делаю не так?