django 多对多 增删改查

[复制链接]
查看: 898   回复: 0

268

主题

268

帖子

1509

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1509
2024-2-18 17:58:04   显示全部楼层   阅读模式  
通用封面.jpg

1.多对多增删改查 ---增

a.多对多model.py模型书写方案
# Create your models here.
# 一个电影可以不同得用户收藏
class moive(models.Model):
    name = models.CharField(max_length=50)
    duration = models.IntegerField(default=90)

    class Meta:
        db_table = 'tb_moive'


# 用户
class user(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField(default=18)
    # 多对多关系
    moives = models.ManyToManyField(moive)

    class Meta:
        db_table = 'tb_Moive_user'
b、在view.py多对多得数据添加 以及多对多得关系 关联数据添加方案
from django.http import HttpResponse
from django.shortcuts import render
from appMany.models import *


# Create your views here.
def index(request):
    pass
    return HttpResponse("路由测试++")


def add(request):
    # 添加用户
    # for i in range(1, 10):
    #     user.objects.create(name=f'谢凡{i}', age=i * 6)

    # 让谢凡2 收藏 阿凡达1
    userM = user.objects.get(name='谢凡2')
    videoM = moive.objects.get(name='阿凡达')
    videoM = moive.objects.get(name='成龙离线')
    # 用户添加收藏电影
    # userM.moives.add(videoM)
    # 添加收藏得第二种写法
    videoM.user_set.add(userM)
    return HttpResponse("添加成功")
2.多对多增删改查---删 view.py
def delete(request):
    # 单表操作
    # user.objects.filter(name='谢凡9').delete()

    # 删除中间表
    user1 = user.objects.get(name='谢凡2')
    user1.moives.filter(name='阿凡达').delete()
    return HttpResponse("删除成功")
3.多对多增删改查---查 view.py
def getUserM(request):
    user1 = user.objects.get(name='谢凡2')
    print(user1.moives.all())
    return HttpResponse("查询汇总")
改由于跟单表类似https://www.xiefansq.cn/forum.ph ... &extra=page%3D1 不再赘述

一般就是怪原始表,不改中间表


回复

使用道具 举报

您需要登录后才可以回帖   登录 立即注册

高级模式

南通谢凡软件科技有限公司