如何使用DjangoORM从两个表中获取数据?

问题描述 投票:0回答:1

我在数据库中有两个表:

class CustomerEquipment(models.Model):
serial_number = models.CharField(max_length=255)
state_timestamp = models.DateTimeField()
state_type = models.IntegerField()

class Meta:
    managed = False
    db_table = 'customer_equipment'


class LogCustomerEquipment(models.Model):
    state = models.IntegerField()
    state_timestamp = models.DateTimeField()
    serial_number = models.CharField(max_length=255)

class Meta:
    managed = False
    db_table = 'log_customer_equipment'

我执行两个数据库查询:

    customer_equipment_list = CustomerEquipment.objects.using('portal').filter(
        Q(state_type=10) & Q(state_timestamp__icontains='2020-02-27')
    )
    log_customer_equipment_list = LogCustomerEquipment.objects.using('portal').filter(
        Q(state=2) & Q(state_timestamp__icontains='2020-02-27')
    )

我需要获取serial_number在两个表中。怎么做?如何优化查询?两个表中可以有相同的serial_number。需要选择相交的对象。

django python-3.x django-orm
1个回答
0
投票
您可以尝试以下操作:设置(CustomerEquipment.objects.values_list('serial_number',flat = True))&设置(LogCustomerEquipment.objects.values_list('serial_number',flat = True))

或者也许您应该根据关系重构模型。例如,使用ForeignKey或ManyToManyField。

© www.soinside.com 2019 - 2024. All rights reserved.