我在尝试将两个不同列的值添加到查询中时遇到了一个问题,即其中一些包含数字。这意味着内置的Concat无法使用,因为它需要字符串或字符。
考虑到如何在SQL中将变量转换为其他数据类型,我不明白为什么我无法在Django中做到这一点。
cast(name as varchar(100))
我认为在Django中结合使用Concat函数和Cast可以做到这一点。
queryset.annotate(new_col=Concat('existing_text_col', Cast('existing_integer_col', TextField())).get())
以上内容显然无效,那么有人知道如何实际执行此操作吗?
用例(如果有人想知道的话)发送的jenkins URL作为整体保存为片段。因此,一个网址是:
base_url: www.something.com/
url_fragment: name/
url_number: 123456
答案 0 :(得分:0)
我最终写了一个序列化程序,该序列化程序从包含URL片段和许多其他内容的基本序列化程序继承而来。在其中,我为完整的URL创建了MethodField,并定义了一个getter函数,该函数加载了不同的片段并将它们添加在一起。我还将片段字段重新声明为“无”。
新序列化器中的代码是:
complete = serpy.MethodField("get_copmlete")
serverUrl = serpy.Field(attr=None, call=False, required=False)
jobName = serpy.Field(attr=None, call=False, required=False)
buildNumber = serpy.Field(attr=None, call=False, required=False)
def get_complete(self, obj):
return obj.server_url + obj.job_name + '/' + str(obj.build_number)