zoukankan      html  css  js  c++  java
  • django ORM 多对多关系

    多对多关系

    在model.py定义好两张表

    执行迁移创建数据库

    # 生成迁移文件
    python manage.py makemigrations
    
    #执行迁移文件
    python manage.py migrate
    

    添加演员和电影

    添加演员和电影的关联

    movie_obj = Movie.objects.filter(pk=1).first()  # 获取电影表的电影
    
    actor_obj = Actor.objects.filter(actor_name='赵四').first()
    actor_id = actor_obj.id  # 获取演员的id
    
    movie_obj.actor.add(actor_id)  # 添加
    

    获取电影表所关联的演员

    movie_obj = Movie.objects.filter(pk=1).first()  # 获取电影表的电影
    
    actor_list = movie_obj.actor.all()  # 获取电影表所关联的所有演员
    
    for i in actor_list:
        print(i.actor_name)  # 循环遍历输出
    
    

    反向获取演员所演过的电影

    actor_obj = Actor.objects.filter(pk=1).first()  # 获取演员对象
    
    print(actor_obj.movie_set.all())  # 获取对应的关联电影进行输出
    

    更新电影表对应的演员

    actor01_obj = Actor.objects.filter(actor_name='李二').first()
    actor01_id = actor01_obj.id  # 获取演员李二的id
    
    actor02_obj = Actor.objects.filter(actor_name='张三').first()
    actor02_id = actor02_obj.id  # 获取演员张三的id
    
    movie_obj.actor.set([actor01_id, actor02_id])  # 进行修改,!!!参数必须为列表
    

    删除对应关系

    actor01_obj = Actor.objects.filter(actor_name='李二').first()
    actor01_id = actor01_obj.id  # 获取演员李二的id
    
    actor02_obj = Actor.objects.filter(actor_name='张三').first()
    actor02_id = actor02_obj.id  # 获取演员张三的id
    movie_obj.actor.remove(actor01_id, actor02_id)  # 删除与演员李二和张三对对应关系
    
  • 相关阅读:
    test1
    servlet的生命周期
    关与JdbcTemplate"的thread "main" org.springframework.jdbc.BadSqlGrammarException
    正则表达式
    @Autowired和@Resource的区别
    kubernetes安装
    docker相关
    KIBANA
    mysql在centos上安装
    MySql不错的文章
  • 原文地址:https://www.cnblogs.com/hr20-04-19/p/13153478.html
Copyright © 2011-2022 走看看