2 Stimmen

heroku und django, Wert zu lang für Typ Zeichen variierend(50)

Ich erhalte diesen Fehler bei syncdb:

  File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/models/manager.py", line 203, in _insert
    return insert_query(self.model, objs, fields, **kwargs)
  File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/models/query.py", line 1576, in insert_query
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 910, in execute_sql
    cursor.execute(sql, params)
  File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/util.py", line 40, in execute
    return self.cursor.execute(sql, params)
  File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
    return self.cursor.execute(query, args)
django.db.utils.DatabaseError: value too long for type character varying(50)

Nachdem Sie dieses neue Modell erstellt haben:

class Promocio(models.Model):
    codiIdioma = models.CharField(u"Codi de l'idioma",max_length = 10, choices = LANGUAGES, unique=True  )    
    headTxt = models.TextField( u"Text del títol",   help_text = u'''Text que apareixerà com a títol al missatge de promoció de la recollida de e-mails amb la tablet''' )
    bodyTxt = models.TextField( u"Text del cost del missatge" ,  help_text = u'''Text que apareixerà com al cos del missatge de promoció de la recollida de e-mails amb la tablet''')
    buttonTxt =  models.TextField( u"Text del butó d'OK",  help_text = u'''Text que apareixerà dins el butó de recollida de e-mails amb la tablet''' )
    codiOrdenacio = models.CharField(u"Codi d'ordenació",max_length = 10, blank = True, help_text = u"Codi alfanumèric per determinar quin idioma es presenta abans i quin després. Ex: 00AA" )  

    class Meta:
        ordering=['codiOrdenacio']
        db_table = u'promocions_tablet'
        verbose_name = u'Missatge de Promoció a mostrar a la tablet'
        verbose_name_plural = u'Missatges de Promoció a mostrar a la tablet'

Haben Sie eine Idee, wie man das beheben kann?

3voto

Chris Pratt Punkte 219403

Die einzigen Objekte, die automatisch während der syncdb son ContentType s, sondern jedes char-Feld auf ContentType erlaubt 100 Zeichen, und das schon seit den Anfängen von Django. Die verbose_name wird verwendet für die name Feld des Inhaltstyps, aber Ihr verbose_name ist zwar lang, aber noch nicht einmal 50 Zeichen lang.

Kurz gesagt, Django verarbeitet auch jede initial_data Einbauten in todos Anwendungen jedes Mal syncdb ausgeführt wird. Deshalb habe ich gefragt, ob Sie welche haben. Wenn es keine für diese bestimmte App gibt, muss es eine App geben, irgendwo die eine hat. Dies kann auch Anwendungen von Drittanbietern umfassen, die in INSTALLED_APPS Sie müssen sich also vielleicht etwas umsehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X