django .db.utils.ProgrammingError: невозможно привести интервал типа к дате - PullRequest
0 голосов
/ 18 апреля 2020

Я развертываю приложение 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, но на героку он дает эти проблемы.

...