Я развертываю приложение django на heroku, и эта ошибка продолжает появляться, когда я запускаю heroku run python3 manage.py migrate
.
django.db.utils.ProgrammingError: cannot cast type interval to date
LINE 1: ...MN "coupon_validity" TYPE date USING "coupon_validity"::date
Мой models.py:
coupon_title = models.CharField(max_length=100)
coupon_summary = models.TextField(max_length=400)
coupon_pubdate = models.DateTimeField(default=timezone.now)
coupon_validity = models.DateTimeField(default=(timezone.now() + timezone.timedelta(days=1)))
coupon_code = models.CharField(max_length=100, default = '-')
coupon_user = models.ForeignKey(User, on_delete = models.CASCADE, null = True))
Мои views.py:
def create(request):
coupons = Coupon.objects
if request.method == "POST":
if request.POST['title'] and request.POST['summary'] and request.POST['validity'] and request.POST['code']:
coupon = Coupon()
coupon.coupon_title = request.POST['title']
coupon.coupon_summary = request.POST['summary']
coupon.coupon_validity = request.POST['validity']
coupon.coupon_code = request.POST['code']
coupon.coupon_pubdate = timezone.datetime.now()
coupon.coupon_user = request.user
coupon.save()
return redirect('homepage')
else:
return render(request, 'coupons/create.html', {'error': 'All fields are required.'})
return render(request, 'coupons/create.html', {'coupons': coupons})
И страница создания купона вводит ее как datetime-local:
<input class="text" type="datetime-local" name="validity" id="validity" placeholder="Validity" required="">
<div class="form-alert" id="validityalert" role="alert">
</div>
Это должно быть ошибкой от Postgresql, поэтому мой код settings.py также:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
import dj_database_url
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)
Я действительно не знаю, что попробовать. Код прекрасно работает на localhost: 8000, но на героку он дает эти проблемы.