django ORM中的一对多查询

参考地址:https://blog.csdn.net/houyanhua1/article/details/84953388

应用名/models.py  (一对多 models.ForeignKey)

##############################################
#    设备表  (一类)
##############################################
class Devices(models.Model):
    id = models.IntegerField(primary_key=True )
    dev_name = models.CharField(max_length=24)
    dev_code = models.CharField(max_length=12)
    dev_brand = models.CharField(max_length=12)
    dev_model = models.CharField(max_length=24)
    dev_system = models.CharField(max_length=16)
    dev_version = models.CharField(max_length=16)
    dev_color = models.CharField(max_length=8)
    add_time = models.DateTimeField()
    update_time = models.DateTimeField()
    dev_status = models.IntegerField()
    dev_delete = models.IntegerField()
    first_category_id = models.IntegerField()
    second_category_id = models.IntegerField()
    org_section_id = models.IntegerField()
    dev_detail = models.CharField(max_length=100)
    dev_feature = models.CharField(max_length=32)
    borrow_id = models.IntegerField()

    class Meta:
        db_table = 'devman_devices'

##############################################
#    设备图片表  (多类)
##############################################
class Dev_image(models.Model):
   # 关联属性,定义在多的一方(其中dev会自动加上"_id",对应数据库中的dev_id;意思是dev_id与Devices表中的id关联) dev
= models.ForeignKey(to="Devices", to_field="id", on_delete=models.DO_NOTHING) # 对应数据库中的字段dev_id id = models.IntegerField(primary_key=True) # dev_id = models.IntegerField() img_ori = models.CharField(max_length=50) img_small = models.CharField(max_length=50) create_time = models.DateTimeField() class Meta: db_table = 'devman_dev_image'

关联查询

注意: 1、查询哪个表中的数据,就通过哪个模型类来查询。  2、通过关联属性的条件查询时,如果关联属性定义在该模型类中就直接使用关联属性,否则使用关联的模型类名小写。

通过多类的查询一类的数据:
    一类名.objects.filter(多类名小写__多类属性名)   # 关联属性没有定义在该类中,所以用多类名小写
通过一类的查询多类的数据:
    多类名.objects.filter(关联属性__一类属性名)     # 关联属性定义在该类中,所以直接用关联属性名

根据关联属性的条件查询

通过多类的条件查询一类的数据:
    一类名.objects.filter(多类名小写__多类属性名__条件名)   # 关联属性没有定义在该类中,所以用多类名小写
通过一类的条件查询多类的数据:
    多类名.objects.filter(关联属性__一类属性名__条件名)   # 关联属性定义在该类中,所以直接用关联属性名

posted @ 2021-04-01 17:30  远洪  阅读(341)  评论(0)    收藏  举报