django通过ManyToManyField自动创建第三张表
# 1 . django通过ManyToManyField自动创建第三张表 class Book(models.Model): title = models.CharField(max_length=32) pub = models.ForeignKey('Publisher', on_delete=models.CASCADE) # authors = models.ManyToManyField('Author') # 描述多对多的关系 不生成字段 生成关系表 def __repr__(self): return self.title __str__ = __repr__ class Author(models.Model): name = models.CharField(max_length=32) books = models.ManyToManyField('Book') # 描述多对多的关系 不生成字段 生成关系表 手动创建第三张表
class Book(models.Model): title = models.CharField(max_length=32) class Author(models.Model): name = models.CharField(max_length=32) class Book_Author(models.Model): book = models.ForeignKey(Book, on_delete=models.CASCADE) author = models.ForeignKey(Author, on_delete=models.CASCADE) date = models.DateField() 自己创建 + ManyToManyField(仅限查询)
# 使用 手动创建第三章表和 ManyToMany字段时. ManyToMany的set功能可能不会更好的应用,当第三张表存在其他的字段不能通过set设置值. class Book(models.Model): title = models.CharField(max_length=32) class Author(models.Model): name = models.CharField(max_length=32) books = models.ManyToManyField(Book, through='Book_Author') class Book_Author(models.Model): book = models.ForeignKey(Book, on_delete=models.CASCADE) author = models.ForeignKey(Author, on_delete=models.CASCADE) date = models.DateField() # 不能通过ManyToMany字段的set设置值 通过设置ManyToMany字段对应的那张表.
# 多对多 class Book(models.Model): bname = models.CharField(max_length=32, unique=True) bprice = models.CharField(max_length=32) pid = models.ForeignKey('Publish', on_delete=models.CASCADE) # 外键参数说明: # to_field :被关联对象的用于关联的字段. 默认情况, Django 使用被关联对象的主键 # on_delete : models.CASCADE 级联删除 # models.SET(1) 将当前字段的值设置成1 # models.SET_DEFAULT 设置默认值, 需要设置default:default=11 # models.SET_NULL 设置为空,需要设置 : null=True # models.DO_NOTHING 什么都不做,关联的数据删除后不影响当前字段的值 class Author(models.Model): username=models.CharField(max_length=32) books=models.ManyToManyField('Book') # 设置了多对多关系, 对应的是book对象 # 前端页面,通过book对象反查作者表中的数据 , book.author_set是一个关系管理对象 <!--反查: book.author_set.all --> {% for author in book.author_set.all %} {{ author.username }} {% endfor %}转载于:https://www.cnblogs.com/dengl/p/11420896.html
相关资源:垃圾分类数据集及代码