django - Django 复杂查询:组合输出
问题描述
模型.py
class DeviceType(models.Model):
device_type = models.CharField(max_length=200,unique=True)
def __str__(self):
return self.device_type
class Device(models.Model):
device_type = models.ForeignKey(DeviceType,to_field='device_type')
serial_number = models.CharField(max_length=200,unique=True)
in_use_by = models.ForeignKey(User,to_field='username')
brand = models.CharField(max_length=200,default="-", null=False)
model = models.CharField(max_length=200,default="-", null=False)
type_number = models.CharField(max_length=200,blank=True,null=True)
mac_address = models.CharField(max_length=200,blank=True,null=True)
以上是我的models.py 文件。我想编写一个查询,以便获得以下格式的输出:
device_type-serial_number-model-brand
解决方案
用Python处理
我们可以生成一个包含这些字符串的列表,然后让 Python 构造这些字符串,如下所示:
list(map(
'-'.join,
Devices.objects.values_list(
'device_type__device_type',
'serial_number',
'model',
'brand'
)
)
这将返回 a list
of str
ings。
在数据库中处理
我们还可以在数据库中执行连接,然后我们有一个字符串查询集:
from django.db.models import F, Value
from django.db.models.functions import Concat
Devices.objects.annotate(
text=Concat(
F('device_type__device_type'),
Value('-'),
F('serial_number'),
Value('-'),
F('model'),
Value('-'),
F('brand')
)
).values_list('text', flat=True)
推荐阅读
- php - 如何在其他文件的其他变量中添加回显变量?
- node.js - 我在使用 Braintree 时遇到错误:ValidationErrorsCollection
- excel - Excel VBA 中的批量打印作为一项作业
- crashlytics - 如何清除/删除 firebase Crashlytics 自定义键?
- ansible - JSON 操作 - 过滤器和行内联
- javascript - 我的续集关联有困难
- c++ - 直接设置Singleton Class的成员变量是否有效?
- google-apps-script - 在 gsheet 中的特定列和行上添加时间戳并冻结
- reactjs - 如何在 React 构建中使用环境变量?
- ruby - 无法在 MacOS M1 上安装自制软件