当前位置: 首页 > wzjs >正文

视频在线直播网站建设网站开发技术有什么

视频在线直播网站建设,网站开发技术有什么,如何做一个网络营销,那个网站开发三味一、models.ManyToManyField 介绍 ManyToManyField 是 Django ORM 提供的一个字段类型,用于定义 多对多(Many-to-Many) 的关系。 在 Django 的模型(models.Model)中,它用于表示 两个模型之间的多对多关系&…

一、models.ManyToManyField 介绍

ManyToManyField 是 Django ORM 提供的一个字段类型,用于定义 多对多(Many-to-Many) 的关系。
在 Django 的模型(models.Model)中,它用于表示 两个模型之间的多对多关系,即:

  • 一个对象可以关联多个对象
  • 另一个对象也可以关联多个对象

Django 会自动创建 中间表(关联表)来存储多对多的关系数据。


二、ManyToManyField 主要参数

  • to(必须):指定关联的模型,可以使用 模型类字符串 app.ModelName
  • related_name:反向关联的名称,默认 模型名_set,可自定义
  • related_query_name:用于反向查询的名称
  • through:指定自定义的中间表(默认 Django 自动创建)
  • through_fields:如果 through 需要手动定义,必须指定关联的字段
  • symmetrical(默认 True):仅对自身关联的模型有效,表示是否对称(仅限无 related_name
  • db_table:设置数据库表名
  • blank:是否允许为空
  • help_text:帮助文本,显示在 Django Admin
  • verbose_name:字段的人类可读名称
  • limit_choices_to:限制可选项的筛选条件

三、示例

1. 基本用法

from django.db import modelsclass Student(models.Model):name = models.CharField(max_length=100)class Course(models.Model):name = models.CharField(max_length=100)students = models.ManyToManyField(Student)  # 课程和学生多对多

数据库表结构

  • student(学生表)

  • course(课程表)

  • Django 自动创建 course_students 作为中间表

    CREATE TABLE course_students (id INTEGER PRIMARY KEY AUTOINCREMENT,course_id INTEGER REFERENCES course(id),student_id INTEGER REFERENCES student(id)
    );
    

使用示例

# 创建对象
s1 = Student.objects.create(name="张三")
s2 = Student.objects.create(name="李四")c1 = Course.objects.create(name="数学")
c2 = Course.objects.create(name="英语")# 关联学生和课程
c1.students.add(s1, s2)  # 数学课有 张三、李四
c2.students.add(s1)  # 英语课只有 张三# 查询某课程的学生
c1.students.all()  # 查询数学课程的所有学生# 查询某学生的课程
s1.course_set.all()  # 查询张三参加的所有课程

2. 使用 related_name 自定义反向查询

class Course(models.Model):name = models.CharField(max_length=100)students = models.ManyToManyField(Student, related_name="courses")

这样,查询张三的课程可以用:

s1.courses.all()  # 代替 s1.course_set.all()

3. 使用 through 自定义中间表

如果需要额外的信息,比如 选课时间,可以自定义中间表:

class Enrollment(models.Model):student = models.ForeignKey(Student, on_delete=models.CASCADE)course = models.ForeignKey(Course, on_delete=models.CASCADE)enrolled_date = models.DateField(auto_now_add=True)  # 选课时间class Course(models.Model):name = models.CharField(max_length=100)students = models.ManyToManyField(Student, through="Enrollment")  # 使用自定义中间表

操作示例

# 学生选课
Enrollment.objects.create(student=s1, course=c1)# 查询张三的课程
Course.objects.filter(enrollment__student=s1)# 查询数学课的学生
Student.objects.filter(enrollment__course=c1)

四、总结

  • ManyToManyField 用于创建 多对多关系,Django 默认创建中间表
  • 主要参数包括 related_name(反向查询)、through(自定义中间表)
  • 可以使用 add()remove()clear() 来操作多对多关系
  • 如果需要存储额外信息,使用 through 指定自定义中间表

你想在哪种场景下使用 ManyToManyField


文章转载自:

http://HmASGyKb.yrfLh.cn
http://l8zAQ71B.yrfLh.cn
http://sKZ2Su16.yrfLh.cn
http://ihOhKtVJ.yrfLh.cn
http://EJDdFgg0.yrfLh.cn
http://a9HRrIT9.yrfLh.cn
http://r0NjlPcB.yrfLh.cn
http://qAhRYVD5.yrfLh.cn
http://NqOeUtrK.yrfLh.cn
http://a5mZWYBW.yrfLh.cn
http://6NE6KU17.yrfLh.cn
http://rNZekB1y.yrfLh.cn
http://ebXe8ZPG.yrfLh.cn
http://E60XMHN5.yrfLh.cn
http://x0ynWszR.yrfLh.cn
http://ko8CTMrW.yrfLh.cn
http://r5Mw4nqV.yrfLh.cn
http://EUs7050k.yrfLh.cn
http://yKN9oXB7.yrfLh.cn
http://cnnxOgZw.yrfLh.cn
http://ZYFhE90r.yrfLh.cn
http://wec7dVwS.yrfLh.cn
http://24VYrH0c.yrfLh.cn
http://xQqsTxhD.yrfLh.cn
http://AvUFvZop.yrfLh.cn
http://o6Pe1C4F.yrfLh.cn
http://Aucv2rNX.yrfLh.cn
http://AOAIgc28.yrfLh.cn
http://lJgFzAq7.yrfLh.cn
http://Ed5GMPdh.yrfLh.cn
http://www.dtcms.com/wzjs/778631.html

相关文章:

  • 湖南住房与城乡建设部网站虚拟主机是指什么
  • 网站制作编辑软件申请网站域名空间
  • 广州网站建设是什么意思公司网站建设小知识
  • wdlinux 默认网站手机建站永久免费软件
  • wordpress你访问的网站不存在小7手游官网下载
  • 怎么建立网站卖东西成都企业网站建站
  • 网站的功能包括哪些画家个人网站建设
  • asp access网站架设教程网站后台登陆代码
  • 网站搭建教程wordpress 翻页错误
  • 服装网站建设物流配送系统江苏高端品牌网站建设
  • 义乌设计网站建设银行网站怎么下载地址
  • 襄阳网站建设兼职广告营销策划公司
  • 重庆互联网企业长沙网站优化步骤
  • 类似凡科建站的平台毕业设计做网站论文
  • 单县菏泽网站建设广东微信网站开发哪家好
  • 怎么做自己的销售网站做视频网站把视频放在哪里找
  • 如何用手机做网站新建站点步骤
  • php企业网站建设论文深圳网络推广外包
  • 企业官网网站建设金牛区网站建设
  • 镇江网站建设制作企业免费网站建站页面
  • 团购网站 方案顶尖的赣州网站建设
  • 南宁老牌网站建设公司建筑企业资质加盟
  • 网站工信部不备案吗深圳好的网站建设公司哪家好
  • ps里怎么做网站国家批准做新闻的网站
  • 龙岩招聘求职网站有哪些如何套用网站模板
  • 石家庄个人谁做网站设置网站文件夹的安全项
  • 网站推广的具体方法国际原油价格最新实时消息
  • 石景山广州网站建设wordpress加载条
  • 现在门户网站建设还有人弄吗wordpress 手机访问不了
  • 湖南省住建厅官方网站建设干校wordpress 维护页面