【问题标题】:DataError: value too long for type character varying(1024) TextFieldDataError:类型字符变化的值太长(1024)TextField
【发布时间】:2020-11-12 23:35:24
【问题描述】:

您好,我的 Django 模型有这个问题。字段是来自 TinyMCE 的 HTMLField,它继承自 Django 的 TextField,因此它应该是无限的。 db 是否有可能以某种方式截断了这个长度?我正在插入大约 4k 个字符长的字符串,并且我使用 psql (PostgreSQL) 12.3 作为我的数据库。谢谢

型号:

class Category(Model):
    page_content_html=HTMLField(_("page content"), blank=True, null=False, default=''),
  
)

HTML 字段:

class HTMLField(models.TextField):
"""
A text area model field for HTML content.

It uses the TinyMCE 4 widget in forms.

Example::

    from django.db.models import Model
    from tinymce import HTMLField

    class Foo(Model):
        html_content = HTMLField('HTML content')
"""
def __init__(self, *args, **kwargs):
    self.tinymce_profile = kwargs.pop('profile', None)
    super(HTMLField, self).__init__(*args, **kwargs)

def formfield(self, **kwargs):
    defaults = {
        'widget': TinyMCE(profile=self.tinymce_profile)
    }
    defaults.update(kwargs)
    # As an ugly hack, we override the admin widget
    if defaults['widget'] == AdminTextareaWidget:
        defaults['widget'] = AdminTinyMCE(profile=self.tinymce_profile)
    return super(HTMLField, self).formfield(**defaults)

psql:

          Sloupec      |          Typ           | Collation | Nullable |                        Implicitně                        
-------------------+------------------------+-----------+----------+----------------------------------------------------------
 id                | integer                |           | not null | nextval('product_category_translation_id_seq'::regclass)
 language_code     | character varying(15)  |           | not null | 
 name              | character varying(256) |           | not null | 
 long_name         | character varying(512) |           | not null | 
 page_content_html | text                   |           | not null | 
 master_id         | integer                |           |          | 
 description_html  | text                   |           | not null | 
 page_description  | text                   |           | not null | 
 page_keywords     | character varying(512) |           | not null | 
 page_title        | character varying(256) |           | not null | 
 page_url_slug     | character varying(256) |           | not null | 

【问题讨论】:

    标签: django postgresql


    【解决方案1】:

    value too long for type character varying(1024) 是 PostgreSQL 错误,这表明您的应用程序正在尝试将数据插入到 VARCHAR(1024) 列中。但是,您的表定义没有与此定义匹配的列,所以我想知道应用程序是否实际上正在尝试将数据插入到不同的表中(例如,在不同模式中具有相同名称的表,甚至与您认为它正在连接的数据库不同的数据库)。

    以下查询应识别任何VARCHAR(1024) 列,并提供有关应用程序尝试在何处插入数据的更多线索:

    SELECT table_schema, table_name, column_name
      FROM information_schema.columns
     WHERE data_type = 'character varying'
       AND character_maximum_length = 1024;
    

    请注意,查询只会显示当前数据库的信息。

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2020-04-04
      相关资源
      最近更新 更多