Django позволяет мне корректно сохранять модель через админку, но не через форму/шелл
У меня возникают трудности с сохранением экземпляра модели Django в мою базу данных. Экземпляр состоит из поля FileField, которое, как я думаю, и вызывает трудности. Моя модель выглядит следующим образом:
class initial_settings(models.Model):
name = models.CharField(max_length=30, unique=True)
epsilon = models.FloatField(default = 0.3)
document = models.FileField(upload_to='documents/')
def __str__(self):
return self.name
Когда я открываю оболочку, создаю экземпляр и сохраняю, я выполняю команду
test = initial_settings(name = 'test1234', epsilon = 3, document = 'doc.csv').save()
pd.DataFrame(csv.reader(open(test.document.path, 'r')))
Выдает ошибку No such file or directory
. Но если я открываю консоль администратора и создаю экземпляр, он сохраняется правильно, и я могу загрузить его из оболочки. В консоли администратора я вижу, что экземпляр, созданный в shell, сохраняется не в правильное место ('media/documents'), а прямо в корневой каталог, но я не уверен почему. Любая помощь будет признательна!
ПОСТСКРИПТУМ: Settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
Я разобрался, это была довольно простая ошибка. Тип формы в моем шаблоне был неправильным. Мне нужно было
<form enctype="multipart/form-data" action="" method="post">{% csrf_token %}
вместо просто
<form action="" method="post">{% csrf_token %}