Django -- 一對多建表增刪改查

一對多表結構

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/')
相關文章
相關標籤/搜索