设计表时注意的几点:
1、 nid = models.AutoField(primary_key=True) #如果不指定django会默认加上id的
nid = models.BigAutoField(primary_key=True) #但那些整型满足不了你的时候,就用BigAutoField
2、对于类的注释一般加在类里面
3、verbose_name=“标题” 字段的中文提示
4、ForeignKey(to = "表名",tofield= "字段") #这两个to可以不用写,但是关联的表名一定要写
5、releated_name = "uuu" 反向查询。如果一个表中有多个ManyTwoMany()或者ForeignKey()必须加上releated_name
6、字段经常变动的适合连表
字段变化小,不怎么变的适合在一个表中,不进行连表:就用choices
吧班主任和老师可以放到一个表中、因为他们有相同的属性,如果属性全是一样的,可以放在一个表里(推荐)
也可以分开放,老师表是老师表,班主任表是班主任表。这样就会进行连表操作,连表有性能消耗。
示例
class News(models.Model): title = models.CharField(max_length=32) summary = models.CharField(max_length=255) news_type = models.ForeignKey(to="NewsType") class NewsType(models.Model): type_title = models.CharField(max_length=32) News: id title summary news_type_id t.... 科技... 2 t.... 科技... 1 t.... 科技... 2 NewsType: id title 图片 挨踢1024 段子 # 查看所有新闻 new_list = models.News.objects.all() for row in new_list: print(row.title,row.summary,row.news_type.title)
放在一张表上(choices)
class News2(models.Model): title = models.CharField(max_length=32) summary = models.CharField(max_length=255) news_type_chices = ( (1, ‘图片‘), (4, ‘挨踢1024‘), (3, ‘段子‘), ) news_type = models.IntegerField(choices=news_type_chices) # 查看所有新闻 new_list = News.objects.all() for row in new_list: print(row.title,row.summary,row.get_news_type_display()) 显示row.get_news_type_display() (1、4、3)中对应的 (‘图片‘,‘挨踢1024‘,‘段子‘)
原文:https://www.cnblogs.com/yanxiaoge/p/10588664.html