模型(Models)是应用程序的数据访问层。默认情况下,每个django应用程序都会获取一个 models.py 文件来创建数据库表。 django框架中的默认数据库引擎是 sqlite3 。可以通过访问项目目录下的 settings.py 进行更改。 Django使用ORM(对象关系映射),使无涯教程能够执行数据库操作而无需编写SQL查询,而是使用简单的python对象。
模型(models)是一个包含模型类,不同模型字段和字段关系的定义的模块。 要创建表,只需使一个类成为 Model 类的子类即可。
Django 2.2版提供26种不同的字段类型以捕获不同的数据格式。为简单起见根据函数而不是按字母顺序对它们进行了分组。
Django字段类型中提供以下参数:
有时,业务逻辑需要不同模型类的属性之间的关系。在Django模型中,它们是三个字段关系: ForeignKey(), OneToOneField()和 ManyToManyField()。
ForeignKey就像一对多的关系。它需要两个位置参数,即 Classname 和 on_delete 。 类名是与模型相关的类。 on_delete = models.CASCADE 意味着删除Super类对象时,其所有反射也将被删除,因为ForeignKey也将被删除。例如,当删除以下模型中的Customer对象时,其相关的Order对象也将被删除。
class Customer(models.Model): name = models.CharField(max_length=30) def __str__(self): return self.name class Order(models.Model): customer = models.ForeignKey(Customer, on_delete=models.CASCADE) order_details = models.TextField()
OneToOneField 与ForeignKey非常相似,不同的是,其外观类似于 unique = True 。 例如,如果一个人只能拥有一个国籍,则可以描述如下:
class Person(models.Model): name = models.CharField(max_length=30) def __str__(self): return self.name class Citizenship(models.Model): person = models.OneToOneKey(Person, on_delete=models.CASCADE) country = models.CharField(max_length=30)
多对多关系仅需要一个参数,即与模型相关的类。用下面的例子可以理解:
class Person(models.Model): name = models.CharField(max_length=30) class Group(models.Model): name = models.CharField(max_length=128) members = models.ManyToManyField( Person, through='Membership', through_fields=('group', 'person'), ) class Membership(models.Model): group = models.ForeignKey(Group, on_delete=models.CASCADE) person = models.ForeignKey(Person, on_delete=models.CASCADE) inviter = models.ForeignKey( Person, on_delete=models.CASCADE, related_name="membership_invites", ) invite_reason = models.CharField(max_length=64)
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)