Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement