通过Django queryset通过其他模型访问模型

时间:2019-04-05 09:10:10

标签: django django-models orm django-queryset

我需要通过另一个表中的外键访问特定表中的列。我用SQL编写了它,但是如何用queryset语言编写呢?

这是models.py

class carModel(models.Model):
    id_car_model = models.IntegerField(primary_key=True)
    id_car_mark = models.ForeignKey(carMark,on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    date_create = models.IntegerField(max_length=10,null=True)
    date_update = models.IntegerField(max_length=10,null=True)
    id_car_type = models.ForeignKey(carType,on_delete=models.CASCADE)
    name_rus = models.CharField(max_length=255,null=True)

class CarParts(models.Model):
    id_catalog = models.IntegerField(primary_key=True)
    manufacturer = models.CharField(max_length=200,blank=True, null=True)
    vendor_code = models.IntegerField(blank=True, null=True)
    subgroup = models.CharField(max_length=200,blank=True, null=True)
    title = models.CharField(max_length=200,blank=True, null=True)
    side = models.CharField(max_length=200,blank=True, null=True)
    description = models.CharField(max_length=200,blank=True, null=True)
    model = models.CharField(max_length=200,blank=True, null=True)
    trade_mark = models.CharField(max_length=200,blank=True, null=True)
    original_number = models.CharField(max_length=200,blank=True, null=True)
    request = models.CharField(max_length=200,blank=True, null=True)
    price = models.IntegerField(blank=True, null=True)
    sum = models.IntegerField(blank=True, null=True)
    availability = models.CharField(max_length=200,blank=True, null=True)

class interimTable(models.Model):
    id_interim = models.IntegerField(primary_key=True)
    description = models.CharField(max_length=100,null=True)
    id_catalog=models.ForeignKey(CarParts, on_delete=models.CASCADE)
    id_car_model = models.ForeignKey(carModel,on_delete=models.CASCADE)

这是SQL请求,成功了。我需要同样的东西,但是像querySet一样,才能在其他代码中使用它。

Select title,side,price
from carinfo_carparts,carinfo_interimtable,carinfo_carmodel 
where id_catalog = carinfo_interimtable.id_catalog_id
and  carinfo_carmodel.id_car_model = carinfo_interimtable.id_car_model_id
and carinfo_carmodel.name='Civic';

ag-grid: expand the first group level in ag-grid-angular

1 个答案:

答案 0 :(得分:1)

尝试一下

CarParts.objects.filter(interimtable__id_car_model__name='Civic').values('title', 'side', 'price')