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

一对多表结构

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

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

时间: 2024-07-31 02:39:40

Django -- 一对多建表增删改查的相关文章

Django项目7 单表增删改查

1. import django,osos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_test.settings')django.setup() from user.models import Category,Article#增 # c_obj = Category.objects.create(name="Mysql1")#新增数据# print(c_obj.name)# print(c_obj.create_time)# p

[IOS:OC]Sqlite建库建表增删改查简单实例

#import "ViewController.h" #import <sqlite3.h> #import "Person.h" @interface ViewController () { sqlite3 *_db; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSString *path=[NSHomeDirectory() str

Django 自带的ORM增删改查

通过Django来对数据库进行增删改查 1 首先创建类,在app应用程序里面的model模块里面创建类,写好数据库信息,方便我们待会初始化: 2 创建在django项目里面的settings里面添加app程序()在settings里面的INSTALLED_APPS里面) 3  python manage.py makemigrations     python manage.py migrate 拿models里面的一个类举例: class WebGroup(models.Model): nam

mybatis(单表增删改查)

(mybatis注意各个文件的映射问题) 用到的t_user数据库脚本: -- 导出 mybatis 的数据库结构 CREATE DATABASE IF NOT EXISTS `mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `mybatis`; -- 导出 表 mybatis.t_user 结构 CREATE TABLE IF NOT EXISTS `t_user` ( `id` int(10) NOT NULL AUTO_INCREM

mybatis(单表增删改查useMapper版)

数据库脚本(注意测试时先add-->load-->update-->delete-->list)UserMapper版 -- -------------------------------------------------------- -- 主机: 127.0.0.1 -- 服务器版本: 5.5.36-MariaDB - mariadb.org binary distribution -- 服务器操作系统: Win32 -- HeidiSQL 版本: 8.0.0.4396 --

GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)

运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGenerate/ 生成方式见上一节: GZFramwork数据库层<一>普通表增删改查     新增一个自定义控件:ucTableUnitDocNo   后台代码同上一节ucTableUnit除了实例化bllBusiness不一样外其他都一样(红色背景标注) using System; using

使用CI操作oracle 10g的单表增删改查

<?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class UseOra extends CI_Controller{ public function index()    {        echo '欢迎使用测试CI使用Oracle 10g 的功能,您可以在地址栏中使用如下的函数参数:<br>';        echo '=============================

再说“使用CI操作oracle 10g的单表增删改查”

--Control中的UseOra.php <?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class UseOra extends CI_Controller{ public function index()    {        echo '欢迎使用测试CI使用Oracle 10g 的功能,您可以在地址栏中使用如下的函数参数:<br>';        echo '=======

GZFramwork数据库层《四》单据主从表增删改查

同GZFramwork数据库层<三>普通主从表增删改查   不同之处在于:实例 修改为:   直接上效果:         本系列项目源码下载地址:https://github.com/GarsonZhang/GZFramworkDBDemo/ 生成器源码下载地址:https://github.com/GarsonZhang/GZCodeGenerate/   系列文章 1. GZFramwork数据库层<前言>Demo简介 2. GZFramwork数据库层<前言>D