Я создал обычный django веб-сайт для моего колледжа, который позволяет пользователям входить, выходить из системы и загружать заметки (документы), которые затем можно загрузить.
Я развернул приложение django на уровне бесплатной герои. Все работает нормально, пока пользователь не войдет в систему и не попытается загрузить документ. Сайт развернут здесь . Пожалуйста, не стесняйтесь использовать приложение и загружать тестовый документ и решать проблему. К сожалению, я попытался отладить безуспешно.
Вот код TL; DR, который, как мне кажется, вызывает проблему. Исходный код на github
# models.py
class Notes_Model(models.Model):
uploader = models.CharField(max_length=200)
title = models.CharField(max_length=200)
date_posted = models.DateTimeField(auto_now_add=True)
description = models.TextField(max_length=2500)
branch_choice = models.CharField(max_length=50, choices=branch_choices, default='cse')
file_semester = models.CharField(choices=semester_choice, max_length=2)
file = models.FileField()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("notes-detail", kwargs={"pk": self.pk})
# views.py
class PostCreateView(LoginRequiredMixin, CreateView):
"""
Lets user upload files under the UPLOAD navigation button
"""
model = Notes_Model
fields = ['title', 'description', 'file_semester', 'branch_choice', 'file']
@login_required
def upload_file(self, request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, f'Your files have been uploaded')
return redirect('notes-home')
def form_valid(self, form):
form.instance.uploader = self.request.user
# form.save()
return super(PostCreateView, self).form_valid(form)
# settings.py
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": "dbnrxxxxxx",
"USER": "nyppmrxxxxxxxx",
"PASSWORD": "a very long string",
"HOST": "xxx-xx.xxx.compute-1.amazonaws.com",
"PORT": "5432",
}
}
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=600)
DATABASES['default'].update(db_from_env)
Возникшая ошибка при загрузке документа
DataError at /notes/new/
invalid input syntax for integer: "Computer Science Engineering"
LINE 1: ...1-28T01:18:45.282746+00:00'::timestamptz, 'test', 'Computer ...
^
Request Method: POST
Request URL: https://medinotesdev.herokuapp.com/notes/new/
Django Version: 2.2.1
Exception Type: DataError
Exception Value:
invalid input syntax for integer: "Computer Science Engineering"
LINE 1: ...1-28T01:18:45.282746+00:00'::timestamptz, 'test', 'Computer ...
^
Exception Location: /app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py in _execute, line 84
Python Executable: /app/.heroku/python/bin/python
Python Version: 3.6.10
Python Path:
['/app/.heroku/python/bin',
'/app',
'/app/.heroku/python/lib/python36.zip',
'/app/.heroku/python/lib/python3.6',
'/app/.heroku/python/lib/python3.6/lib-dynload',
'/app/.heroku/python/lib/python3.6/site-packages']
Server time: Tue, 28 Jan 2020 01:18:45 +0000