django 的ORM
2016-04-23 01:16
537 查看
class UserType(models.Model):
caption = models.CharField(max_length=32)
class UserInfo(models.Model):
user_type = models.ForeignKey(UserType)# user_type对象中封装id,caption
username = models.CharField(max_length=32)
注:1.表名_set只能跟在结果后面,不能跟在结果集后面
caption = models.CharField(max_length=32)
class UserInfo(models.Model):
user_type = models.ForeignKey(UserType)# user_type对象中封装id,caption
username = models.CharField(max_length=32)
Select | insert | |||
一对多 | django | 正向 | 1.Models.userinfo.objects.filter(user_type__caption=xxx) 用户类型为xxx的用记 2. models.UserInfo.objects.select_related().all() 两个表做join | 1.models.UserInfo.objects.create(username=’xx’,user_type_id=n) 2.models.UserInfo.objects.create(username=’xx’, user_type=models.UserType.objects.get(caption=’xx’),age=m) |
反向 | 1. obj= models.UserType.objects.all()2.obj=models.UserType.objects.filter(userinfo__age__gt=33) usertype创建后会对应的创建一个与子表名(userinfo)对应的列 userinfo指向子表 3. obj=models.UserType.objects.get(caption='ceo').userinfo_set.all() | ---- | ||
前端 | 正向 | 1. obj.user_name obj.user_type.caption 2. 与1 一样 | ----- | |
反向 | 1.obj.caption obj.userinfo_set.first.username 2. 与 1 一样 3.obj.username or obj.age | ------ | ||
class Host(models.Model): hostname = models.CharField(max_length=32) class HostAdmin(models.Model): username = models.CharField(max_length=32) host = models.ManyToManyField(Host) | ||||
多对多 | django | 正向 | 1.models.HostAdmin.objects.filter(host__hostname='host1').values()管理host1的所有用户 2.admin_obj=models.HostAdmin.objects.filter(host__hostname__in=('host1','host2')).values().distinct()管理host1 或 host2的所有用户 | 1.admin_obj = models.HostAdmin.objects.get(username='user1') host_obj_list = models.Host.objects.filter(id__lt=3) admin_obj.host.add(*host_obj_list) --因为host_obj_list是多条,所以加 * 号 |
反向 | 1. obj = models.Host.objects.get(id=3).hostadmin_set.all() Id=3的主机对应的管理员 2.obj = models.Host.objects.filter(hostadmin__username='user1')管理员为user1 对应的主机 | 1. host_obj = models.Host.objects.get(id=3) admin_obj_list =models.HostAdmin.objects.filter(id__gt=1) host_obj.hostadmin_set.add(*admin_obj_list) | ||
前端 | 正向 | 1.admin.username2. {% for admin in admin_obj %} <p>{{ admin.username}}{% for host in admin.host.all %}{{ host.hostname}}{% endfor %} 此处的all可以改为values,但如果改成values_list,后面就需要改成host.1 (1为index值) | ------- | |
反向 | 1.obj.username 2.obj.hostname | ------------- |
相关文章推荐
- django中使用jquery ajax post数据出现403错误的解决办法(两种方法)
- django使用ajax post数据出现403错误如何解决
- 数据库修改多对多的中间表的记录的技巧
- windows+apache+mod_python配置django运行环境
- python Django连接MySQL数据库做增删改查
- django自定义Field实现一个字段存储以逗号分隔的字符串
- Django框架利用ajax实现批量导入数据功能
- python Django批量导入数据
- 在Python的Django框架中加载模版的方法
- 在Django中使用Sitemap的方法讲解
- 详解Django中的form库的使用
- Django中的CACHE_BACKEND参数和站点级Cache设置
- 剖析Django中模版标签的解析与参数传递
- Python中DJANGO简单测试实例
- Python的Django框架中的数据库配置指南
- 在Django的上下文中设置变量的方法
- 在Python的Django框架中编写编译函数
- 以一个投票程序的实例来讲解Python的Django框架使用
- 在Django的URLconf中进行函数导入的方法
- 在Python的Django框架中生成CSV文件的方法