我想实现一个自定义的Django字段类型。即使用postgres由本机json / jsonb支持的TranslatedField。
但我也希望不必返回特定查询的所有翻译。像这样:
class TranslatedField(JSONField):
pass
class MyModel(models.Model):
name = TranslatedField()
然后用在一个例子中:
>>> MyModel.objects.create(name={'en': 'Duck', 'fr': 'Canard'})
>>> set_language('fr') # Imagine this function sets a global variable
>>> en_fr = MyModel.objects.get(id=1)
>>> en_fr.name
>>> 'Canard'
哪个好,我可以通过返回整个名字来做到这一点。来自数据库的json。但我更愿意,如果django发布了这样的实际SQL,它在postgres中进行了查找并在网络中保存了一些字节:
SELECT 'name'->'fr' FROM 'mymodel';
Django是否有任何钩子可以让我动态地改变' SELECT'部分查询?