我在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)
创建此新模型后:
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'
要解决这个问题的一些想法?
答案 0 :(得分:3)
在syncdb
期间自动创建的唯一对象是ContentType
,但ContentType
上的每个字段都允许100个字符,并且自Django的早期开始。 verbose_name
用于内容类型上的name
字段,但您的verbose_name
虽然很长,但仍然只有50个字符。
除此之外,Django还会在每次运行initial_data
时处理所有应用中的所有syncdb
灯具。这就是我问你是否有任何原因的原因。如果这个特定的应用程序没有,那么必须有一些应用程序,某处确实有一个。此外,这可能包括INSTALLED_APPS
中列出的第三方应用,因此您可能需要做一些事情。