Чтобы позволить вам сохранить отношения на странице администратора, вам нужно сделать поле file
необязательным;это делается путем добавления blank=True
к модели.
file = models.FileField(upload_to=get_file_path, blank=True)
blank
, а не null
, как я изначально предлагал, работает.См. Этот вопрос SO для объяснения: Django - как сделать необязательным ImageField / FileField?
Теперь вы можете создать отношение Document-Product, а затем добавить файл, который будет помещен впапка «документы», как определено вашим методом get_file_path
.
Хотя изменение поля позволяет обойти проблему создания пути загрузки файла, оно нарушает требование наличия в документе документа.Если вы можете с этим смириться, хорошо, но если нет, вам нужно будет найти другое решение, которое по-прежнему соответствует требованию file
.
После рассмотрения этой проблемы, я думаю, вам нужно изменить дизайн относительнохранение документов.Размещение файлов в папках на основе их первоначальной связи с продуктом является слишком ограничительным.Что произойдет, если впоследствии документ будет связан с другим продуктом, собираетесь ли вы обновить имя папки?Та же проблема возникает при удалении Продукта.
Поскольку вы храните ваши отношения в базе данных, нет необходимости также указывать эту информацию в имени папки.Упростите наименование вашей папки и позвольте базе данных отслеживать ссылки.После этого вы сможете применить требования к файлам для документов и , используя интерфейс администратора для создания отношений.