先把models.py摆这儿
# models.py UserProfile类(AbstractUser): “‘ 继承Django的AbstractUser并向里面添加两条数据内容怀疑 “‘ 性别=models.CharField (max_length=6,选择=((“男性”,“男”),('女','女')),默认=浴?verbose_name=靶浴北? 备忘录=模型。文本框(null=True,空白=True, verbose_name=北闱? 类元: verbose_name='用户信息的 verbose_name_plural=verbose_name #指定模型的复数形式是什么,如果不指定Django会自动在模型名称后加一个“年代” 类UserTodo (models.Model): created_time=models.DateTimeField(默认=datetime.now (), verbose_name=按唇ㄊ奔涞? user_id=models.ForeignKey (UserProfile on_delete=模型。C ASCADE) #设置外键,关联到UserProfile表 # models.CASCADE表示若删除某一用户,则该用户下的所有UserTodo也会被删除 基于=models.CharField (max_length=255, verbose_name=按焓孪睢? 做=models.BooleanField(默认=False, verbose_name=巴瓿勺刺? 类元: verbose_name='用户自增信息的 verbose_name_plural=verbose_name >之前<强>一,将数据保存到数据库中(在views.py中)强>
完成模型后,在终端运行python管理。py makemigrations生成数据库,然后可以进行保存操作
<强>对于没有没有外键的数据库:强>
从进口UserProfile得閒 从django.contrib.auth。切肉机进口make_password user_profile=UserProfile () user_profile。用户名=用户名 user_profile。电子邮件=电子邮件 user_profile。密码=make_password(密码)# make_password是django自带的给密码重新编码技术,存储在数据库中 user_profile。is_active=True #判断用户是否激活 user_profile.save ()<强>有外键的数据库强>
1,首先应先获取关联的数据库的信息,如果为用户则为用的在数据库中的ID
user_id=UserProfile.objects.get(用户名=request.user) # request.user表示当前登陆的用户名称,后台实际上是用户名
2,保存到数据库中
user_todo=UserTodo(基于=待办事项,完成=,user_id=user_id created_time=datetime.now())保存到数据库中时按照用户名所在的id进行保存 user_todo.save ()<强>二,对数据库进行更新及查询的操作强>
动机是当用户点击网页上的X号是对数据库中完成的进行更新,更新为真的。
一开始想着按照身份证进行更新,但是当用户多了以后id与网页上显示的id肯定不相同。
经过我的苦苦思索,每个用户中创建todo的时间肯定不相同,因此可以依据created_time可以进行搜索,来完成对进行更新。
说干就干!
1,先查询我们想要的那一条数据
用户的todo显示在网页上时是按照created_time进行了排序,因此在更新的时候也按照created_time进行排序,这样子便不会出错。
user_id=UserProfile.objects.get(用户名=request.user) #获取当前登陆用户的todo id(按照后台的打印实际上为用户名) todo_query=UserTodo.objects。过滤器(user_email=user_id=False) #按照user_id,做进行对数据库的筛选 #在UserTodo表中找出user_id以及该用户下做=False的数据 # todo_query的类型为& lt;类django.db.models.query.QuerySet的祝辞 todo_query=todo_query.order_by (created_time) #按照截至日期按照从小到大的顺序进行筛选,若要从大到小排序则(-created_time)现在的结果是我们已经得到了该用户名下的所有做=False的数据,并且已经完成了排序
接下来就是找到我们想要的那一条数据
todo_dict=todo_query.values (created_time) #经过值,得到created_time的那一列数据类型依旧为QuerySet,但只有一种数据,即全部是created_time的数据,这时就可以提取我们想要的数据了
time_dict [3] [' created_time '] # QuerySet中第四个名称为created_time的数据(序号从0开始,因此3是第四个)3为网页上元素的索引打印打印(time_dict [3] [' created_time '])的结果为:2018-06-07 01:45:10.938825 + 0到此已经完成数据的查询。
2,对数据进行更新
已经是小菜一碟了hiahiahia…
按照上述查询到的created_time,来找出当前用户下符合这一个cteated_time的记录(肯定只有一条)
Django对数据库进行添加与更新的例子