Django中创建对象的组合

一、问题背景

在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,  # 借书人姓名
        )

 四、总结

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

上一篇:命名空间


下一篇:PAT乙级1037