# Create your models here. #ORM相关的只能写在这个文件里 from django.db import models class Userinfo(models.Model): id = models.AutoField(primary_key=True) #创建一个自增的主键 name = models.CharField(null=False,max_length=20,unique=True) #创建一个varchar(可以保存可变长度的字符串)类型不能为空 def __str__(self): return "<{} {}>".format(self.id,self.name) ''' 定义如下:代表自定义表名字不加前缀:库中表名就为 userinfo class Meta: db_table = "userinfo" 如果不定义 class Meta 库中表名则为 appweb_userinfo ''' class Publisher(models.Model): id = models.AutoField(primary_key=True) #创建一个自增的主键 # unique 唯一的不为空的字段 name = models.CharField(null=False,max_length=64,unique=True) #创建一个varchar(可以保存可变长度的字符串)类型不能为空 addr = models.CharField(max_length=128) def __str__(self): return "<{} {}>".format(self.id,self.name) class Book(models.Model): id = models.AutoField(primary_key=True)#自增的住建 title = models.CharField(max_length=64,null=False,unique=True) #ForeignKey表示外键 publisher = models.ForeignKey(to="Publisher",on_delete=models.CASCADE,db_column=False) # 这里创建的字段为publisher_id (Django会自动加_id)所以不用写成publisher_id否者就变成了publisher_id_id def __str__(self): # 两种写法 return "Book object :%s" %self.title # 必须返回str # return "".format(self.title) class Author(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(null=False,max_length=16,unique=True) # 告诉ORM 这张表和book表是多对多的关系,ORM自动生成第三章表 book = models.ManyToManyField(to="Book") def __str__(self): return "".format(self.name) class Person(models.Model): name = models.CharField(max_length=32) age = models.IntegerField(default=18) birthday = models.DateField(auto_now_add=True) def __str__(self): return "".format(self.name) # class Meta: # ordering = ("birthday",)