創建兩個數據表類,並實現主外鍵關聯(出版社與圖書 一對多關系)
1 #創建一個出版社類
2 class Press(models.Model): 3 id =models.AutoField(primary_key=True), #自增型主鍵
4 name=models.CharField(max_length=30,null=False,unique=True) #varchar 30 非空且唯一
5
6 class Book(models.Model): 7 bid=models.AutoField(primary_key=True) 8 bname=models.CharField(max_length=48,null=False,unique=True) 9 press=models.ForeignKey(to='Press') #外鍵關系 是一個press對象
查詢有主外鍵關系的book表時,可以直接調press對象下的name屬性 也可以調id
1 {% for foo in book %} 2 <tr>
3 <td>{{ foo.bid }}</td>
4 <td>{{ foo.bname }}</td>
5 <td>{{ foo.press.name }}</td>
6 <td>
7 <a href="/del_book/?id={{ foo.bid }}">刪除</a>
8 <a href="/edit_book/?id={{ foo.bid }}">編輯</a>
9 </td>
10 </tr>
11 {% endfor %}
有些時候查詢到的結果希望能編輯,又不想被胡亂修改可以使用下拉列表select
1 出版社:<select name="pre">
2 {% for foo in press %} 3 <option value="{{ foo.id}}">{{ foo.name }}</option>
4 {% endfor %} 5
6 </select>
此時后台在來獲取pre,取到的其實就是value的值
用Django自帶模板創建數據庫表的操作:
一對多用:主外鍵
多對多用:第三張表來標記關系
1 class Student(models.Model): 2 sid=models.AutoField(primary_key=True) 3 sname=models.CharField(max_length=32,null=False,unique=True) 4 grade=models.ForeignKey(to='Grade') 5
6
7 class Grade(models.Model): 8 gid = models.AutoField(primary_key=True) 9 gname = models.CharField(max_length=48, null=False, unique=True) 10
11
12 class Teacher(models.Model): 13 tid = models.AutoField(primary_key=True) 14 tname = models.CharField(max_length=32, null=False, unique=True) 15 grade=models.ManyToManyField(to='Grade')