【发布时间】:2017-05-30 14:28:34
【问题描述】:
我正在使用 Django 1.9。我有一个模型如下:
class Report(models.Model):
LANGUAGE_CHOICES = (
('EN', 'English'),
('CY', 'Welsh')
)
company = models.ForeignKey(Company)
language = models.CharField(
max_length=2,
choices=LANGUAGE_CHOICES,
default='EN'
)
pdf_url = models.URLField(blank=True)
现在我想插入一个值:
report_obj, created = Report.object.update_or_create(
company=company, language='English')
但这失败了:
psycopg2.DataError: value too long for type character varying(2)
我的数据源包含“English”和“Welsh”,而不是“EN”和“CY”。
如何使用人类可读的名称进行更新?或者我是否需要在我的导入脚本中维护一个从人类可读名称到短值的单独查找列表?
【问题讨论】:
-
你的问题解决了吗??
-
嗨,Richard,您可以使用以下方法检查 LANGUAGE_CHOICES 字段中的人类可读名称: key = [x[0] for x in LANGUAGE_CHOICES if 'English' in x] 并将此键传递给插入语句所需格式
标签: python django django-models