DataError at /freshleadaction значение слишком длинное для типа character varing(20)
Я работаю над веб-приложением на django. Все работает нормально на моей локальной машине, а затем я разместил код на Heroku. но он не работает на живом сервере. Он выдает следующую ошибку, когда я пытаюсь опубликовать файл .csv:
DataError at /freshleadaction
value too long for type character varying(20)
У меня интегрирована база данных PostgreSQL. Я удалил миграции, а затем снова мигрировал всю схему. Я думаю, что проблема либо в PostgreSQL, либо в heroku? У меня есть две модели, которые выглядят следующим образом:
class fresh_leads_model(models.Model):
fname = models.CharField(max_length=250)
lname = models.CharField(max_length=250)
street_number = models.CharField(max_length=250)
street_name = models.CharField(max_length=250)
state = models.CharField(max_length=250)
zip_code = models.CharField(max_length=250)
bedrooms = models.CharField(max_length=250)
legal_description = models.CharField(max_length=250)
sq_ft = models.CharField(max_length=250)
address = models.CharField(max_length=250)
orign_ln_amt = models.CharField(max_length=250)
prop_value = models.CharField(max_length=250)
equity = models.CharField(max_length=250)
email = models.CharField(max_length=250)
cell = models.CharField(max_length=250)
submitted_date = models.DateField(auto_now_add=True)
updated_date = models.DateField(auto_now_add=True)
deleted_date = models.DateField(auto_now_add=True)
class cash_buyer_model(models.Model):
fname = models.CharField(max_length=255)
lname = models.CharField(max_length=255)
email = models.CharField(max_length=255)
city = models.CharField(max_length=255)
state = models.CharField(max_length=255)
submitted_date = models.DateField(auto_now_add=True)
updated_date = models.DateField(auto_now_add=True)
deleted_date = models.DateField(auto_now_add=True)
моя функция views.py:
полная трассировка ошибки:
DataError at /freshleadaction
value too long for type character varying(20)
Request Method: POST
Request URL: http://www.realtorbit.com/freshleadaction?type=1
Django Version: 3.1.1
Exception Type: DataError
Exception Value:
value too long for type character varying(20)
Exception Location: /app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py, line 84, in _execute
Python Executable: /app/.heroku/python/bin/python
Python Version: 3.6.1
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']
Прежде всего, в предоставленных вами исходных кодах нет модели с max_length=20
. Поэтому вам нужно искать ее в других моделях.
Обратите внимание:
- В Python вам нужно использовать CamelCase в именах классов, поэтому сделайте правки типа
class cash_buyer_model(models.Model):
->
class CashBuyerModel(models.Model):
- Поскольку это Модель, нет необходимости использовать ее в именах классов:
class CashBuyer(models.Model):
- Я вижу, что вы упомянули, что уже нашли нужное поле, вам нужно вытолкнуть обновленный код на Heroku .
Я знаю, что вы сказали, что "удалили миграции, а затем снова мигрировали всю схему", но очевидно, что что-то должно остаться от вашей первоначальной схемы.
Я бы предложил:
- Удалите всю базу данных в Heroku, если вам не важны данные:
heroku pg:reset DATABASE
. - Выложите свой последний код в Heroku (включая новые миграции в новом
git commit
):git push heroku HEAD:main
. - Мигрируйте базу данных:
heroku run python manage.py migrate
.
Привет, ребята, спасибо за ваши усилия. На самом деле, я применил все эти решения до того, как опубликовать свою проблему здесь, но внезапно у меня появилась идея, и я удалил все мои Charfields
из моих fresh_leads_model и cash_buyer_model и оставил их параметры пустыми (я имею в виду без max_length=255
). Хотя CharField
работал на моей локальной машине, но не работал на живом сервере . Поэтому я решил изменить его с CharField
на TextField
без ограничения max_length
, чтобы Heroku поддерживал его, и теперь все работает хорошо.