一。假设有四个模型类
1.人类模型:有头,手,脚字段和名字。
class Person(models.Model):
head = models.CharField(max_length=10)
leg = models.CharField(max_length=10)
hand = models.CharField(max_length=10)
name = models.CharField(max_length=10)
2.男人模型:有胡子,戴眼镜,是否结婚。
class Man(models.Model):
moustache = models.CharField(max_length=10)
glasses = models.CharField(max_length=10)
marry = models.CharField(max_length=10)
person = models.ForeignKey(
'Person',
on_delete=models.CASCADE,
)
car = models.ManyToManyField(
'Car', verbose_name='car'
)
woman = models.OneToOneField('Woman')
3.车的模型:有轮子,车灯,颜色
class Car(models.Model):
wheel = models.CharField(max_length=10)
lighting = models.CharField(max_length=10)
color = models.CharField(max_length=10)
4.女人模型:有长发,戴眼镜,是否结婚
class Woman(models.Model):
hair = models.CharField(max_length=10)
glasses = models.CharField(max_length=10)
marry = models.CharField(max_length=10)
4. 四者关系,Person和Man是一对多,Man和Car是多对多,Woman和Man是一对一关系
二。一对多(Person和Man)的操作
1.查询:
1.1 正向查询:
通过外键存在的模型(多的一方)查询少的一方。
aMan = Man.objects.get(id=3)
aMan.person #这是一个Person的单个对象
1.2 反向查询:
通过一查询多,字段取多一方模型的小写+ _set
aPerson = Person.objects.get(id=1)
manyMan = aPerson.man_set #这是一个QuerySet对象,是多个行的集合