1. 程式人生 > >django----數據庫表設計

django----數據庫表設計

prim 查看 row big choice 查詢 HICE style sum

設計表時註意的幾點:

  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‘,‘段子‘)

  

django----數據庫表設計