SHARE
TWEET

Untitled

a guest Oct 23rd, 2019 65 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from django.db import models
  2.  
  3. class User(models.Model):
  4.     # define fields for User table 为数据库中的用户表定义字段, 比如
  5.     # username = models.CharField('username', unique=True, max_length=64)
  6.     pass
  7.  
  8. # 菜谱
  9. class Recipe(models.Model):
  10.     # 因为每个菜谱必须关联一个用户作为创建者, 所以用户和菜谱之间是一对多的关系, 需要设置一个ForeignKey, 如:
  11.     # creator = models.ForeigKey(User, on_delete=models.CASCADE)
  12.     # 还需要定义其他字段, 如创建时间, 标题, 内容等
  13.     pass
  14.  
  15. # 跟做菜肴
  16. class Dish(models.Model):
  17.     # 每个dish会关联一个创建者(用户)和一道菜谱, 并且user -> dish 是一对多的关系, recipe -> dish也是一对多的关系
  18.     # 因此dish的字段里需要设置两个ForeignKey, 分别指向User和Recipe
  19.     # dish还需要定义自己的创建时间,标题等等
  20.     pass
  21.  
  22. # 问题一般发布在Recipe页面, Recipe和Question之间是一对多的关系
  23. class Question(models.Model):
  24.     # 需要定义ForeignKey 指向 Recipe 和 User
  25.     pass
  26.  
  27. # 评论一般发布在Dish页面, 是对于每份菜肴的评论(类似于Question, 不同在于它关联的是Dish, Dish -> Comment 是一对多的关系)
  28. class Comment(models.Model):
  29.     # 因此需要定义ForeignKey 指向 Dish 和 User
  30.     pass
  31.  
  32. '''
  33. future extension 扩展功能
  34. 1. 考虑到用户之间可以定义关注 这是一个User <-> User的多对多关系, django有提供一个 models.ManyToManyField() 可以后续完成
  35. 2. 注意到下厨房网页版有一个category(分类), 每个菜谱可以对应多个分类('猪肉','日式','早餐'), 同时每个分类可以对应多个菜谱,
  36.    因此这也是一个多对多关系
  37. 3. 网页版还有一个event类, 每个dish可以通过打tag(#<eventname>#)来关联多个event, 每个event也对应多个dish, 因此这也是一个多对多关系
  38. 4. 通常来说, 多对多关系需要构建额外的表来记录这种关系, 不过如果定义了ManyToManyField, django就能够自动生成隐式的关联表
  39.    具体怎么使用,还需大家仔细看django.models部分的文档
  40. '''
  41.  
  42. class Category(models.Model):
  43.     pass
  44.  
  45. class Event(models.Model):
  46.     pass
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top