ForeignKey -- 設置外鍵與另外一張表關聯數據庫
class Book(models.Model): title = models.CharField(max_length=32) pub = models.ForeignKey('Publisher', on_delete=models.CASCADE) # 外鍵 -- 關聯表另外一張表
查詢url
all_books = models.Book.objects.all() # 獲取全部的數據 print(all_books) for book in all_books: print(book) # 獲得一個數據對象 print(book.pk) # 數據對象的主鍵ID print(book.title) # 數據對象的title字段的值 print(book.pub, type(book.pub)) # 外鍵關聯的對象 print(book.pub_id, type(book.pub_id)) # 外鍵關聯的對象的ID
新增spa
def book_add(request): if request.method == 'POST': # 判斷請求方法 title = request.POST.get('title') # 經過input框的name='title'屬性獲取value值(輸入內容) pub_id = request.POST.get('pub_id') # 同上 # models.Book.objects.create(title=title, pub=models.Publisher.objects.get(pk=pub_id)) models.Book.objects.create(title=title, pub_id=pub_id) # 同步到數據庫,(數據庫字段=獲取的值) return redirect('/book_list/') # 重定向,跳轉頁面
刪除code
def book_del(request): pk = request.GET.get('pk') # 獲取url中 pk對應的value值 models.Book.objects.filter(pk=pk).delete() # 比較Book表中的pk值與獲取url的pk值,相同就刪除 return redirect('/book_list/')
編輯對象
def book_edit(request): pk = request.GET.get('pk') # 獲取發送GET請求對應的pk值 book_obj = models.Book.objects.filter(pk=pk).first() # 獲取pk值對應數據對象 if request.method == 'POST': title = request.POST.get('title') # input框中name='title'屬性對應的value值 pub_id = request.POST.get('pub_id') book_obj.title = title # 修改book表數據對象的值 book_obj.pub_id = pub_id # 經過pub_id獲取到option的value值,並修改book表中的值,(pub_id外鍵對應publisher表中的pk值對應的數據) book_obj.save() # 提交數據 return redirect('/book_list/')