Как получить pk созданной записи для сохранения объекта с значением pk из CreateView?
В моём случае я пытаюсь сохранить наименование файла *изображение с значение pk из CreateView. Понимаю, что pk не увижу до сохранения в БД новой записи.
class DocumentationCreateView(LoginRequiredMixin, CreateView):
model = Documentation
fields = ['img', 'date', 'description', ]
template_name = "photo/documentation_add.html"
def form_valid(self, form):
form.save(commit=False)
form.instance.owner = self.request.user
response = super().form_valid(form)
print('form_valid')
print(form.instance.pk)
return response
Вижу pk, всё логично...
Далее имею функцию переименования файла и удаления экземпляра уже созданного...
class DocumentationMixin:
@staticmethod
def my_files_path(instance, filename, ):
name = os.path.join(filename)
print("utils pk")
print(instance.pk)
pk = instance.pk
name = f'documentation{pk}_{instance.owner.username}_{instance.owner.pk}.jpg'
path = f"documentation/{name}"
storage = instance._meta.get_field('img').storage
print("utils pk2")
print(instance.pk)
if storage.exists(path):
storage.delete(path)
return path
Есть сигнал (начала читать и пробовать делать):
@receiver(post_save, sender=Documentation)
def create_documentation_file(sender, instance, created, **kwargs):
if created:
# Генерируем имя файла после сохранения
path = DocumentationMixin.my_files_path(instance, instance.img.name,)
print('sygnals pk')
print(instance.pk)
instance.save()
Вижу соответственно записи при создании объекта:
utils pk
None
utils pk2
None
utils pk
156
utils pk2
156
sygnals pk
156
form_valid
156
Получаю наименование файла с не определившимся pk (id=None) documentationNone_user1_1.jpg При обновлении поста я уже, естественно/логично, получаю уже известный pk\id записи и всё происходит согласно моей логике. Получаю наименование, пример, с pk=156: documentation156_user1_1.jpg
КАК мне при создании объекта передать pk? Сижу и думаю долго, понимаю, что рядом, но блин уже паника. Помогите определить дальнейшие шаги, как это правильно сделать?