以“一篇文章只能属于一个分类;一篇文章有多个标签,一个标签也可以对应多篇文章为例”。数据模型如下:
- 一对多关系:
这里定义Article和Category两个数据模型,Django会自动创建“项目名_类名”的表,Article表会创建category_id的字段,来对应Category表的id,通过id关联。这种情况下查询某篇文章对应的分类,可以直接在模板中引用article.category,得到的是分类名称;但有时需要查分类id,可以通过article.category.id来访问,也可以通过article.category_id,即直接访问表的字段名。
- 多对多关系:
文章和标签是多对多关系,Django会额外创建一个表,表里记录是两个数据模型的id,通过id把数据模型映射形成多对多关系,当需要查询某篇文章的所有标签时,需要在文章所有标签数据集里迭代查询。