Использование модели в качестве источника для PK для другой модели?

Итак, если у меня есть простая модель, которую я хочу использовать в качестве источника PK, например, так:

class PostCreation(models.Model):
    pk = models.AutoField(primary_key=True)
    post = models.OneToOneField(Post, on_delete=models.CASCADE)

Я хочу создать PK записи блога до того, как она будет создана. Я рассуждаю так: я хочу, чтобы изображения/файлы, которые я загружаю, были в формате

/media/blogPK/files

Итак, мой пост будет иметь поле id/PK, установленное в классе PostCreation выше. Псевдокод приведен ниже:

id = PostCreation()
FileField(upload_to='{}{}{}'.format(id, '/', files))

Но как я могу сначала создать PK, а затем передать его в модель Post и затем установить Post is/pk в PostCreation?

Я собираюсь использовать ModelForm для вывода полей для содержания поста, описания/даты и т.д. Поэтому, когда я посещаю это представление, я хочу, чтобы pk/id уже был создан, даже если пользователь отправит содержимое модели поста. содержимое модели Post.

Как я могу это сделать? Возможно ли это?

Thx

Все, что вам нужно сделать, это заполнить форму начальным значением, основанным на последнем сохраненном объекте id. Затем :

views.py : где вы инстанцируете форму

def create_post(request):

    # Some logics here ...

    # Retrieve the last object id from the db
    latest_index = Post.objects.last().id
    # Format the folder name based on the index
    upload_to = f"{latest_index + 1}/files"
    # Set the initial value of the folder path
    form = PersonForm(initial={'file_field_name': upload_to})

    # Some logics here ...

NB : Обратите внимание, что file_field_name - это имя поля FileField в модели

Вернуться на верх