码迷,mamicode.com
首页 > 其他好文 > 详细

Django -- 一对多建表增删改查

时间:2019-08-27 22:56:58      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:red   book   nbsp   获取   style   post   多表   strong   objects   

一对多表结构

ForeignKey -- 设置外键与另一张表关联

class Book(models.Model):
    title = models.CharField(max_length=32)
    pub = models.ForeignKey(Publisher, on_delete=models.CASCADE) # 外键 -- 关联表另一张表

 

查询

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

 

新增

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/)  # 重定向,跳转页面

 

删除

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/)

 

Django -- 一对多建表增删改查

标签:red   book   nbsp   获取   style   post   多表   strong   objects   

原文地址:https://www.cnblogs.com/Agoni-7/p/11420937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!