求指导django中one-to-many和foreign key的应用及用途,djangoone-to-many,在《The Django
求指导django中one-to-many和foreign key的应用及用途,djangoone-to-many,在《The Django
在《The Django Book》中有这么一个实例描述
我们来假定下面的这些概念、字段和关系:
一个作者有姓,有名及email地址。出版商有名称,地址,所在城市、省,国家,网站。书籍有书名和出版日期。 它有一个或多个作者(和作者是多对多的关联关系[many-to-many]), 只有一个出版商(和出版商是一对多的关联关系[one-to-many],也被称作外键[foreign key])
它说,书籍和出版商的关系是一对多,OneToMany(也叫外键,ForeignKey),这个我就觉得没法理解,在我看来,一本书应该只能属于一个出版商,一个出版商可以出多本书。从字面上理解,应该是ManyToOne啊
然后对应到models,The Django Book 是这么写的,只在Book 这个模型中注明了外键
class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) '''here!''' publication_date = models.DateField()
但是以之前字面上的理解,我觉得应该是在出版商那个模型上为book增加ForeignKey(OneToMany)啊...
'''这是我的理解,但是应该是错的...'''class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50) city = models.CharField(max_length=60) state_province = models.CharField(max_length=30) country = models.CharField(max_length=50) book = models.ForeignKey(Book) '''here''' website = models.URLField()
LZ,Django官方所说的one-to-many只是它的写法而已,不具有指向性。更明确的是外键这种叫法。
如果按照你所理解的具有指向性,那么就要写成one-to-many和many-to-one了。
但要注意:one-to-one和foreignkey(unique=True)两种确实有指向性,至少在调用的时候会有这种差别。
应该是翻译上的不准确。
http://www.djangobook.com/en/2.0/chapter05.html
Django 总共定义了三种关系
这里的关系的表述并非单向的。book 和 publisher 之间有一个one-to-many的关系,但是其中的one是publisher,many是book。这种关系的具体实现方法是在book中加入一个foreign key。
编橙之家文章,
相关内容
- Python什么方法可以将XML转换为JSON格式,pythonjson,由于老
- Python mysql数据牗executemany指定写入表报错,pythonexecute
- python3一当前函数调用另一个函数中的数据怎么实现,
- python import模块导入ImportError: No module named A路径应该没问
- 请问python 中cx_oracle使用where col in (:1)的方式的时候,是
- Flask Web开发实例3-10怎么样来实现?,flask3-10,Windows环境
- Python方法获得系统CPU频率及内存占用情况,python内存占
- Python七牛可以成功上传却不能正常访问文件如何解决,
- 使用python统计目标词在文件中出频度的实现方法,pyt
- Python中像__xxx__是做什么用的?,Python__xxx__,看一些源代码
评论关闭