一、关系
1.1 一对一的关系
字段名称 = models.OneToOneField(to,on_delete)
to
指要参考的模型名称(数据表名称)
on_delete
指在删除(父)表记录时,(子)表的动作
反向关系
假设user表为主表,userinfo为从表,现在有以下代码:
users = User.objects.all()
现在得到了主表中的所有数据,但是在模板中如果要访问从表记录的话,在Django
中称为反向关系,因为你现在要得到从表中的记录,也就是说最终拿到的是从表中的记录,它是按拿到的最终的结果来说。
访问反向关系
object.模型名称.字段名称
模型名称为小写字母
如onetoone.html
中访问记录的HTML代码如下:
{% for user in users %}
<p>姓名:{{ user.username }}</p>
<!-- user.userinfo.occupation 就是反向关系-->
<p>岗位:{{ user.userinfo.occupation}}</p>
{% endfor %}
访问正向关系
object.关系名称.字段名称
class UserInfo(models.Model):
# 0为男,1为女,2为保密
sex = models.CharField(max_length=1)
# 0为未婚,1为已婚,2为保密,
maritalstatus = models.CharField(max_length=1)
monthlyincome = models.DecimalField(max_digits=8,decimal_places=2)
occupation = models.CharField(max_length=30)
# 外键字段,最终形成字段名称为:指定名称_id,如下案例将形成: user_id
# 该名称在模型中严格称为关系名称,在访问正向关系时使用
user=models.OneToOneField(User,on_delete=models.CASCADE)