Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- class User(models.Model):
- # define fields for User table 为数据库中的用户表定义字段, 比如
- # username = models.CharField('username', unique=True, max_length=64)
- pass
- # 菜谱
- class Recipe(models.Model):
- # 因为每个菜谱必须关联一个用户作为创建者, 所以用户和菜谱之间是一对多的关系, 需要设置一个ForeignKey, 如:
- # creator = models.ForeigKey(User, on_delete=models.CASCADE)
- # 还需要定义其他字段, 如创建时间, 标题, 内容等
- pass
- # 跟做菜肴
- class Dish(models.Model):
- # 每个dish会关联一个创建者(用户)和一道菜谱, 并且user -> dish 是一对多的关系, recipe -> dish也是一对多的关系
- # 因此dish的字段里需要设置两个ForeignKey, 分别指向User和Recipe
- # dish还需要定义自己的创建时间,标题等等
- pass
- # 问题一般发布在Recipe页面, Recipe和Question之间是一对多的关系
- class Question(models.Model):
- # 需要定义ForeignKey 指向 Recipe 和 User
- pass
- # 评论一般发布在Dish页面, 是对于每份菜肴的评论(类似于Question, 不同在于它关联的是Dish, Dish -> Comment 是一对多的关系)
- class Comment(models.Model):
- # 因此需要定义ForeignKey 指向 Dish 和 User
- pass
- '''
- future extension 扩展功能
- 1. 考虑到用户之间可以定义关注 这是一个User <-> User的多对多关系, django有提供一个 models.ManyToManyField() 可以后续完成
- 2. 注意到下厨房网页版有一个category(分类), 每个菜谱可以对应多个分类('猪肉','日式','早餐'), 同时每个分类可以对应多个菜谱,
- 因此这也是一个多对多关系
- 3. 网页版还有一个event类, 每个dish可以通过打tag(#<eventname>#)来关联多个event, 每个event也对应多个dish, 因此这也是一个多对多关系
- 4. 通常来说, 多对多关系需要构建额外的表来记录这种关系, 不过如果定义了ManyToManyField, django就能够自动生成隐式的关联表
- 具体怎么使用,还需大家仔细看django.models部分的文档
- '''
- class Category(models.Model):
- pass
- class Event(models.Model):
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement