[root@localhost project0904]# vim app0904/models.py from __future__ import unicode_literals from django.db import models # Create your models here. class Teacher(models.Model): id=models.IntegerField(primary_key=True) name=models.CharField(max_length=50) class Meta: db_table='teacher' class Student(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=50) age=models.IntegerField() sex=models.IntegerField() teacher=models.ForeignKey(Teacher) class Meta: db_table='student' [root@localhost project0904]# python manage.py makemigrations You are trying to add a non-nullable field 'teacher' to student without a default; we can't do that (the database needs something to populate existing rows). Please select a fix: 1) Provide a one-off default now (will be set on all existing rows with a null value for this column) 2) Quit, and let me add a default in models.py Select an option: 1\ Please select a valid option: 1 Please enter the default value now, as valid Python The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now Type 'exit' to exit this prompt >>> 1 Migrations for 'app0904': app0904/migrations/0002_auto_20160905_0220.py: - Create model Teacher - Add field teacher to student [root@localhost project0904]# python manage.py migrate Operations to perform: Apply all migrations: admin, app0904, auth, contenttypes, sessions Running migrations: Applying app0904.0002_auto_20160905_0220... OK [root@localhost project0904]# python manage.py shell Python 2.7.5 (default, Jun 17 2014, 18:11:42) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from app0904.models import Student ,Teacher >>> >>> Teacher.objects.create(id=1,name='teacherWang') <Teacher: Teacher object> >>> Teacher.objects.create(id=2,name='teacherLiu') <Teacher: Teacher object> >>> student=Student.objects.get(id=1) >>> student.teacher.name u'teacherWang' >>> teacher=Teacher.objects.get(id=1) >>> student=teacher.student_set.get(id=1) >>> student.name u'wang1'
ManyToMany
[root@localhost project0904]# vim app0904/models.py from __future__ import unicode_literals from django.db import models # Create your models here. class Teacher(models.Model): id=models.IntegerField(primary_key=True) name=models.CharField(max_length=50) class Meta: db_table='teacher' class Student(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=50) age=models.IntegerField() sex=models.IntegerField() teacher=models.ForeignKey(Teacher) class Meta: db_table='student' class Group(models.Model): id=models.IntegerField(primary_key=True) name=models.CharField(max_length=50) members=models.ManyToManyField(Student,through='MemberShip') class Meta: db_table='group' class MemberShip(models.Model): id=models.IntegerField(primary_key=True) group=models.ForeignKey(Group) student=models.ForeignKey(Student) class Meta: db_table='MemberShip' [root@localhost project0904]# python manage.py shell Python 2.7.5 (default, Jun 17 2014, 18:11:42) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> >>> from app0904.models import * >>> studentList=Student.objects.filter(teacher_id=1) >>> len(studentList) 2 >>> teacher=Teacher.objects.get(id=1) >>> group=Group.objects.create(id=2,name='teacherWangs') >>> MemberShip(group=group,student=studentList[0]) <MemberShip: MemberShip object> >>> MemberShip(group=group,student=studentList[1]) <MemberShip: MemberShip object> >>> group=Group.objects.get(id=2) >>> group.name u'teacherWangs' >>> teacher.name u'teacherWang' >>> teacher.student_set.all() <QuerySet [<Student: Student object>, <Student: Student object>]> >>> len(teacher.student_set.all()) 2 >>> group=Group.objects.get(id=2) >>> studentList=group.members.all() >>> groupList=student.group_set.all() >>>
相关推荐
在 Django 框架中,ORM (Object-Relational Mapping) 是一种强大的工具,它允许开发者用 Python 对象来操作数据库,而无需直接编写 SQL 语句。外键(Foreign Key)是数据库关系中的一种机制,用于在一个表中引用另一...
延迟外键在概念上类似于通用外键,不同之处在于它们在运行时解析为真正的外键,并导致在数据库中创建正确的外键。 这个包允许你做两件事: * Declare that a model's foreign key field is 'deferrable', and ...
在Django中,外键约束(Foreign Key Constraints)用于建立两个模型之间的关系,通常用于表示一对多或一对一的关联。然而,在某些开发场景下,可能需要取消外键约束,这可能是出于性能优化、数据迁移或其他设计考虑...
第19周-第19章节-Python3.5-基于DjangoORM的外键实现增加用户(含select标签).avi
Django 的模型层提供了一种方式,能够让你在 Python 中定义数据库表结构。其中,外键(ForeignKey)是 Django ORM(对象关系映射)中的一个字段类型,用于在两个模型之间创建关联。本文详细介绍了 Django 中外键字段...
Django也包含ORM(对象关系映射)系统,这一系统允许开发者使用Python代码来操作数据库,而不是直接使用SQL语句。 在使用Django进行Web应用开发的过程中,我们可能会遇到需要对数据库结构进行修改的情况,例如,...
本文将介绍在Python框架Django中如何进行数据库查询以及将查询结果渲染到Web页面上的过程。Django是一个高级的、开源的Web应用框架,它遵循模型-视图-控制器(MVC)设计模式,提供了快速开发Web应用的便捷性。 首先...
在Django中,ORM(Object-Relational Mapping)是一种技术,它允许开发者使用面向对象的方式来操作数据库,将数据库中的表映射成Python类,而外键(Foreign Key)是数据库中用于建立表与表之间关联的一种机制。...
在使用Django框架开发Web应用时,数据库的同步是一个常见且重要的操作,它确保数据库结构与我们的应用程序中定义的模型保持一致。Django通过迁移(migrations)的方式,自动跟踪模型的改动,并将这些改动应用到...
Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是“万恶之源”,这是前人总结的经验,不无道理。如果事先理解Django的优化技巧,开发过程中稍稍留意,后期会省不少的...
我原来默认认为在处理外键搜索的时候,django会自动将该外键的行数据以str()化之后进行搜索,但其实并不是这样的,如果将外键加入到搜索域中,需要明确写出来。 这个是我从网上查到的解决方案,测试可用,如下: ...
使用Python编程语言 Django MySQL数据库开发的web版学生管理系统,里面附带环境搭建的详细过程和开发过程中遇到的一些bug的讲解 使用Python编程语言 Django MySQL数据库开发的web版学生管理系统,里面附带环境搭建...
说明和 Model 环境: ➜ python Python 3.6.3 |Anaconda custom (x86_64)| (default, Oct 6 2017, 12:04:38) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/...>>> print(django.get_version()) 2.0.1 >>> 20
在本实例中,我们将探讨如何使用Django框架从MySQL数据库中读取数据并将其呈现到前端页面上。Django是一个强大的Python Web开发框架,而MySQL则是一种广泛使用的关系型数据库管理系统。结合两者,我们可以构建动态的...
在Python的Web开发框架Django中,连接数据库和处理文件上传是两个重要的功能。下面将详细阐述这两个主题。 首先,让我们来谈谈如何在Django中连接MySQL数据库。Django默认使用SQLite数据库,但通过配置可以方便地...
在Python开发领域,Django是一个强大的Web框架,它支持快速构建高效、可维护的网站应用。结合MySQL数据库,我们可以创建稳健的数据存储系统。本教程将详细介绍如何使用Django与MySQL协同工作,实现数据的插入操作。 ...
在使用Django框架进行Web应用开发时,与数据库的交互是至关重要的环节。当你尝试运行`python manage.py migrate`命令来同步数据库模型时,如果遇到`django.db.utils.OperationalError: (1045, "Access denied for ...
但是,这种方法不支持数据库索引、外键关系的自动创建,以及自定义模型方法和属性。如果需要这些功能,可能需要对生成的模型进行进一步的定制。 总的来说,Django的数据库内省工具为我们提供了一种便捷的方式,使...
为了在Django项目中使用Citus,我们需要安装`citus` PostgreSQL扩展,并在Django的数据库配置中指定Citus连接。配置文件可能如下所示: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends....
Django Model的外键自关联 在django的model定义中,有时需要某个Field引用当前定义的Model,比如一个部门(Department)的Model,它有一个字段是上级部门(super_department),上级部门应该是一个外键并引用Model ...