一下是几个 model 建模
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=64)
age = models.IntegerField()
tel = models.CharField(max_length=64)
@property
def all_cars(self):
return cars.all()
@property
def info(self):
# return the name and tel of person
return '%s %s' % (self.name, self.tel)
class Car(models.Model):
owner = models.Foreignkey(Person, related_name='cars')
name = models.CharField(max_length=64)
price = models.FloatField()
在上面的两个表中,Person表是主表,Car是字表,Car表外键至Person表。
子表查询主表为正向查询
car = Car.object.get(id=1)
owner = car.owner #查询该车车主
主表查询子表为反向查询
tom = Person.object.get(id=1)
#查询此人有多少车
#方式一 Django 默认每个主表的对象都有一个外键的属性
#可以通过它查询所有属于主表的子表信息
# 查询方式:主表.子表_set() # 返回值为一个queryset对象
Tom.Car_set().all()
# 方式二: # 通过在外键中设置related_name属性值既可 Tom.cars.all()
# 方式三: # 通过@property装饰器在model中预定义方法实现 Tom.all_cars