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. Поэтому вам нужно искать ее в других моделях. Обратите внимание:

  1. В Python вам нужно использовать CamelCase в именах классов, поэтому сделайте правки типа
class cash_buyer_model(models.Model):

->

class CashBuyerModel(models.Model):
  1. Поскольку это Модель, нет необходимости использовать ее в именах классов:
class CashBuyer(models.Model):
  1. Я вижу, что вы упомянули, что уже нашли нужное поле, вам нужно вытолкнуть обновленный код на Heroku
  2. .

Я знаю, что вы сказали, что "удалили миграции, а затем снова мигрировали всю схему", но очевидно, что что-то должно остаться от вашей первоначальной схемы.

Я бы предложил:

  1. Удалите всю базу данных в Heroku, если вам не важны данные: heroku pg:reset DATABASE.
  2. Выложите свой последний код в Heroku (включая новые миграции в новом git commit): git push heroku HEAD:main.
  3. Мигрируйте базу данных: heroku run python manage.py migrate.

Привет, ребята, спасибо за ваши усилия. На самом деле, я применил все эти решения до того, как опубликовать свою проблему здесь, но внезапно у меня появилась идея, и я удалил все мои Charfields из моих fresh_leads_model и cash_buyer_model и оставил их параметры пустыми (я имею в виду без max_length=255). Хотя CharField работал на моей локальной машине, но не работал на живом сервере . Поэтому я решил изменить его с CharField на TextField без ограничения max_length, чтобы Heroku поддерживал его, и теперь все работает хорошо.

Вернуться на верх