【发布时间】:2018-08-26 04:57:44
【问题描述】:
我正在尝试让 django orm 为我当前的表结构复制对数据库的调用:
表格:
ServiceItems {Id, name, user, date_created}
ServiceItemsProps {fk_to_ServiceItems Item_id, Id, key, value}
我正在尝试使用 ServiceItemsProps 表中的多个键作为列从 ServiceItem 表中选择项目。
我可以通过如下查询来完成此操作:
> select tbl1.value as bouncebacks, tbl2.value as assignees from
> service_items join service_item_props as tbl1 on tbl1.item_id =
> service_items.id join service_item_props as tbl2 on tbl2.item_id =
> service_items.id where service_items.item_type='CARD' and
> tbl1.key='bouncebacks' and tbl2.key='assignees'
但我无法弄清楚如何在 Django 的 ORM 中重现这一点。我不想在这里的语句中注入原始 SQL,因为代码库的可移植性很重要。
models.py 部分
class ServiceItems(models.Model):
class Meta:
db_table = 'service_items'
unique_together = ('service', 'item_type', 'item_id')
service = models.ForeignKey(Service, blank=False, db_column='service_id', on_delete=models.CASCADE)
item_type = models.CharField(max_length=255, blank=False)
url = models.TextField(blank=True, null=True)
item_id = models.TextField(blank=True, null=True)
item_creation_user = models.TextField(blank=True, null=True)
item_creation_date = models.DateTimeField(blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class ServiceItemProps(models.Model):
class Meta:
db_table = 'service_item_props'
item = models.ForeignKey(ServiceItems, blank=False, db_column='item_id', on_delete=models.CASCADE)
prop_id = models.TextField(blank=True, null=True)
key = models.CharField(max_length=255, blank=False)
value = models.TextField(blank=True, null=True)
【问题讨论】:
-
可以添加models.py吗?
-
@JerinPeterGeorge 我已经从文件中添加了字段定义
标签: django orm django-orm