【问题标题】:Accessing model through other model via django queryset通过 django 查询集通过其他模型访问模型
【发布时间】:2019-08-27 03:39:24
【问题描述】:

我需要通过另一个表中的外键访问特定表中的列。我是用 SQL 写的,但是用查询集语言怎么写呢?

这是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';

this is the result

【问题讨论】:

    标签: django django-models orm django-queryset


    【解决方案1】:

    试试这个,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2016-04-14
      • 2019-09-30
      相关资源
      最近更新 更多