我有一个Django模型,其中包含基于citext的别名数组。当我检索记录而不是列表['foobar']
时,我得到一个str '{foobar}'
,显然,尝试添加别名失败。
我曾经有过:
from django.db import models
class zone(models.Model):
name = models.CharField(max_length=255)
aliases = ArrayField(
models.TextField(max_length=255, blank=True),
size=4,
null=True,
blank=True,
)
这工作正常,但由于我需要使其不区分大小写,我将TextField更改为CITextField:
from django.contrib.postgres.fields import ArrayField, CITextField
from django.db import models
class zone(models.Model):
name = models.CharField(max_length=255)
aliases = ArrayField(
CITextField(max_length=255, blank=True),
size=4,
null=True,
blank=True,
)
结果:
items = zone.objects.filter(name='foo')
item = items[0]
print(type(item.aliases), item.aliases)
>> <class 'str'> {"foobar"}
为什么这个 citext 不会被解码为数组而不是普通字符串?
答案 0 :(得分:2)
您需要将public class Test {
private static final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor();
private int i = 1;
public void f() {
i = 2;
EXECUTOR.execute(new Runnable() {
@Override
public void run() {
if (i != 2)
throw new AssertionError("i != 2");
}
});
}
}
添加到django.contrib.postgres
设置。