Django ORM

外键

正向访问

# Filter中访问外键的属性,用双下划线
sub_order.objects.filter(add_date = '20230401', product__name="可乐", order__order_no = '').values()

字段名的转换

用F模块中的annotate方法

from django.db.models. import F

sub_order.objects.annotate(
    productname = F('country__name'),
    orderno = F('order__order_no')
)\
    .filter(add_date = '20230401', productname="可乐", orderno = '').values('add_date', 'productname', 'orderno')

反向访问

表名(转换为小写)_set

order = Oders.objects.get(id = 1)
order.suborder_set.all() # 表名是SubOrder,注意转换了大小写
order.suborder_set.all()[0] # 第一条
order.suborder_set.all()[0].name # 第一条的name属性

或者:
在定义Model的时候,外键字段使用"related_name"参数。 
posted @ 2023-05-03 11:21  chrjiajia  阅读(28)  评论(0)    收藏  举报