django - DataError:类型字符变化的值太长(1024)TextField
问题描述
您好,我的 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 |
解决方案
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;
请注意,查询将仅显示当前数据库的信息。
推荐阅读
- html - 如何使用输入框使用 css click-event 进行卡片翻转?
- php - 为什么 WooCommerce 不在自定义域上设置 cookie?
- php - PHP MySQL重复条目异常 - 带有OnDuplicate的InsertMulti
- python - 在python中识别全NULL字符串的最快方法
- flask-sqlalchemy - 烧瓶 SQLAlchemy + Marshal_list_with + 选定的列
- javascript - JS EventListener 动画结束触发太早
- ajax - 是否可以在没有无限循环的情况下创建异步重置的组件局部原子?
- php - 在此 if 语句 (PHP) 中,此代码中仅 echo 有效
- glsl - 为什么 GLSL 警告告诉我没有写入变化,而它显然是?
- regex - 长度变量的正则表达式命名反向引用