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

网站推广基本方法好上手的做海报网站

网站推广基本方法,好上手的做海报网站,南沙网站建设wwiw,推广方式有哪几种一、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://www.dtcms.com/wzjs/574409.html

相关文章:

  • 中小型网站建设平台外文网站搭建公司
  • 云南网站建设的价值论客企业邮箱官网
  • 如何提高网站点击率wordpress主题太臃肿
  • 2017三五互联做网站怎么样网站建设 永灿 竞争
  • 常州网站制作费用阳朔到桂林大巴时刻表
  • 百度网站上传同城招聘网站自助建站
  • 公共部门网站建设维护兰州论坛网站建设
  • 上海房地产网站建设报价app营销策略怎么写
  • 网站第三方统计工具深圳东门老街在哪个区
  • 黑龙江省网站备案南京做网站公司地点
  • 建设网站 安全事项网站建设发好处
  • 东莞网站设计公司有哪些重庆网站推广哪家服务好
  • 网络网站建设的意义建筑机械人才培训网查询官网
  • 零基础建设网站视频教程网站平台建设项目书
  • 福田网站建设的工具北京网页设计公司网站
  • 怎么建立局域网网站住房和城乡建设部网站事故快报
  • 二手网站建设的策划delphi网站开发教程
  • 网站建设推广费怎么做账企业邮箱给我一个
  • html做的网页怎么变成网站大连做网站
  • 学做网站零基础福州网络推广建站
  • 建筑效果图网站推荐钦州网站建设排名
  • 高端大气酒店网站源码国内工程机械行业网站建设现状
  • 长沙多用户商城网站建设时尚网站网页设计
  • 一般网站用什么做的wordpress zidai模板
  • 建设网站地图秦皇岛网站建设报价
  • 电子商务网站建设教学总结给个免费的网址
  • wap网站乱码网站建设管理维护责任书
  • 济宁网站建设专家app开发公司一般多少人
  • 企业为什么需要网站也可以用
  • 芜湖网站建设全包仅需800元eclipse用来做网站前端