• Django中创建对象的组合


    一、问题背景

    在Django中一个表可能是多个表共同合成的对象,比如商品表,用户表,用户购买商品的表,就是这种情况,在这中情况下面我们要添加一条记录到用户购买的商品表中我们该如何才做,此时我们需要获取对象,获取商品对象和用户对象,再将用户对象和商品对象添加到用户商品购买表中。

    二、模型

    三、使用

    由于信息借阅表是由已存在的书籍信息表和借阅者信息表构成,在添加记录的时候就需要前面的两个表的对象,此时这张表具有的表的特性如下

    1.借阅信息表里面包含书籍id和name

    2.借阅信息表里面包含借阅者id和name

    3.外键指定(否则和主键相连)

    实例

    通过查询到的结果对象,将其作为结果对象和借阅信息表里面的外键相连实现创建一个新的实例对象

    result_book = Book.objects.get(Q(book_id=book_id) & Q(book_status=True))
    # 以前已经存在的书籍
    borrow_book = BorrowInfo.objects.filter(Q(borrow_browser_id=user_id) & Q(borrow_book_id=book_id)).values_list()
    try:
        if result_book and result_user and not borrow_book:
            # 判断借书人的记录直接创建 不存在一个人借两本书  多以borrow_book永远为真
            BorrowInfo.objects.create(
                borrow_info=datetime.datetime.now(),
                browser_time=datetime.date.today(),
                back_time=datetime.date.today() + datetime.timedelta(days=30),
                borrow_browser_id=result_user,
                borrow_browser_name=result_user,
                borrow_book_id=result_book, # 借书人id
                borrow_book_name=result_book,  # 借书人姓名
            )

     四、总结

    通过查找到的新的实例对象和对应的外键字段相连就可以创建一个结果对象,实现了有关外键字段的对象创建

  • 相关阅读:
    .net获取服务器端路径
    js跳转页面回传值问题处理
    关于服务器文件保存到本地文件的浅谈
    ADO.NET中的五个主要对象
    C# 禁止windows程序重复运行的两种基本方法
    一个更好一点的主线程与子线程之间通信的做法
    Django+Nginx配置过程
    一个简单的模板系统的实现(动态载入DLL)
    我的Notepad++环境配置
    一个去除Aspose.Cells生成的EXCEL2007格式中Evaluation Warning的笨办法
  • 原文地址:https://www.cnblogs.com/future-dream/p/12010482.html
Copyright © 2020-2023  润新知