python4-1 django框架v5.0第4节 django入门之模型

  • 当前项目的开发, 都是数据驱动的。

  • 以下为书籍信息管理的数据关系:书籍和人物是 :一对多关系

  • 要先分析出项目中所需要的数据, 然后设计数据库表.

书籍信息表

字段名字段类型字段说明
idAutoField主键
nameCharField书名
idname
1西游记
2三国演义

人物信息表

字段名字段类型字段说明
idAutoField主键
nameCharField人名
genderBooleanField性别
bookForeignKey外键
idnamegenderbook
1孙悟空False1
2白骨精True1
3曹操False2
4貂蝉True2

使用Django进行数据库开发的提示 :

  • MVT设计模式中的Model, 专门负责和数据库交互.对应(models.py)

  • 由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程.

  • 而是定义模型类, 通过模型类和对象完成数据库表的增删改查.

  • ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象.

使用Django进行数据库开发的步骤 :

  1. 定义模型类

  2. 模型迁移

  3. 操作数据库

1. 定义模型类
  • 根据书籍表结构设计模型类:

    • 模型类:BookInfo

    • 书籍名称字段:name

  • 根据人物表结构设计模型类:

    • 外键要指定所属的模型类book = models.ForeignKey(BookInfo)

    • 模型类:PeopleInfo

    • 人物姓名字段:name

    • 人物性别字段:gender

    • 外键约束:book

  • 说明 :

    • 书籍-人物的关系为一对多. 一本书中可以有多个英雄.

    • 不需要定义主键字段, 在生成表时会自动添加, 并且值为自增长.

  • 根据数据库表的设计

    • models.py中定义模型类,继承自models.Model

    • from django.db import models
      
      # Create your models here.
      # 准备书籍列表信息的模型类
      class BookInfo(models.Model):
          # 创建字段,字段类型...
          name = models.CharField(max_length=10)
      
      # 准备人物列表信息的模型类
      class PeopleInfo(models.Model):
          name = models.CharField(max_length=10)
          gender = models.BooleanField()
          # 外键约束:人物属于哪本书
          book = models.ForeignKey(BookInfo)
      
2. 模型迁移 (建表)
  • 迁移由两步完成 :

    • 生成迁移文件:根据模型类生成创建表的语句

      python manage.py makemigrations
      
    • 执行迁移:根据第一步生成的语句在数据库中创建表

      python manage.py migrate
      
  • 迁移前

  • 迁移后

  • 提示:默认采用sqlite3数据库来存储数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
由于商品推荐系统是一个较为复杂的系统,需要综合使用多种算法,包括协同过滤、内容过滤、深度学习等,因此代码实现会比较复杂。在这里,我可以给你提供一种基于协同过滤算法的商品推荐系统推荐功能实现代码示例,供你参考。 首先,我们需要构建一个用户-商品评分矩阵,用于描述用户对商品的评分情况。假设我们的数据表格如下: | 用户ID | 商品ID | 评分 | |--------|--------|------| | 1 | 100 | 4.5 | | 1 | 101 | 3.0 | | 2 | 100 | 5.0 | | 2 | 102 | 4.5 | | 3 | 101 | 2.0 | | 3 | 103 | 4.0 | 首先,我们需要将评分矩阵转换为用户-商品评分矩阵,即将行转换为用户、列转换为商品,得到以下矩阵: | | 100 | 101 | 102 | 103 | |------|-----|-----|-----|-----| | 1 | 4.5 | 3.0 | 0 | 0 | | 2 | 5.0 | 0 | 4.5 | 0 | | 3 | 0 | 2.0 | 0 | 4.0 | 接下来,我们可以使用基于用户的协同过滤算法,来计算当前用户与其他用户的相似度,从而推荐相似用户喜欢的商品。 以下是一个基于Python、MySQL、Django框架的协同过滤算法实现代码示例: ```python import numpy as np import pandas as pd def similarity(user1, user2, data): """ 计算两个用户之间的相似度 """ user1_data = data[user1] user2_data = data[user2] # 找到两个用户都评价过的商品 common_items = [item for item in user1_data if item in user2_data] # 如果没有共同评价过的商品,则相似度为0 if len(common_items) == 0: return 0 # 计算两个用户共同评价过的商品的评分的平方和 sum_of_squares = sum([pow(user1_data[item] - user2_data[item], 2) for item in common_items]) # 返回两个用户之间的相似度 return 1 / (1 + np.sqrt(sum_of_squares)) def recommend(user, data, K=3): """ 推荐商品给指定的用户 """ # 找到与指定用户相似度最高的K个用户 similarities = [(other_user, similarity(user, other_user, data)) for other_user in data if other_user != user] similarities.sort(key=lambda x: x[1], reverse=True) # 构建一个字典,用于存储推荐商品及其预测评分值 recommendation_dict = {} # 遍历与指定用户相似度最高的K个用户,计算推荐商品及其预测评分值 for i in range(K): other_user = similarities[i][0] similarity_score = similarities[i][1] for item in data[other_user]: # 如果指定用户已经评价过该商品,则跳过 if item in data[user]: continue # 计算推荐商品的预测评分值 if item not in recommendation_dict: recommendation_dict[item] = 0 recommendation_dict[item] += data[other_user][item] * similarity_score # 将推荐商品及其预测评分值排序,并返回前N个商品作为推荐结果 recommendations = sorted(recommendation_dict.items(), key=lambda x: x[1], reverse=True)[:N] return recommendations ``` 使用以上代码,即可实现基于协同过滤算法的商品推荐功能。需要注意的是,以上代码只是一个简单的示例,实际的商品推荐系统还需要综合使用多种算法,并进行更加复杂的数据处理和模型优化,才能达到较好的推荐效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz77244920

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值