创建模型进行数据库的迁移
python manage.py makemigrations
python manage.py migrate
模型中的参数
1.关于blank=True
和 null=True
- blank用于表单的认证,被设为blank=False(默认为False)的字段在填写表单时不能为空。
- null用于规定数据库中的列的非空性,被设为null=False(默认为False)的字段在数据库中对应的列不能为空(用SQL来说明就是为该列添加了NOT NULL的约束)。
2. 关于ForeignKey中的参数
一对多关系中
比如: 一篇文章有多个评论
article
和 comment
为一对多关系
在comment
模型中定义外键 aid
表示该评论属于该篇文章
那么怎样查到一篇文章的所有评论呢?
就需要在定义外键时加related_name
参数
比如: related_name = 'comments'
可以认为给文章加了一个comments属性, 通过 article.comments.all()
可以获取到某篇文章的所有评论
class Articles(models.Model): #文章
aid = models.IntegerField(primary_key=True) #文章id
article_title = models.CharField(max_length=30) #文章标题
article_theme_id = models.ForeignKey('Article_theme',models.DO_NOTHING, db_column='a_theme_id', related_name='articles',null=True) #文章的主题
#可以通过theme.articles 查询到某个主题下的所有文章
article_pubtime = models.DateTimeField(auto_created=True)
article_author_id = models.ForeignKey('User',models.DO_NOTHING, db_column='uid', related_name='articles', null=True) #文章的作者
#某位用户可以通过user.articles 查询到自身的所有文章
article_cover = models.CharField(max_length=50) #文章封面
article_content = models.TextField(max_length=2000) #文章内容
article_view_count = models.IntegerField(blank=True) #浏览量
article_collect_count = models.IntegerField(blank=True) #收藏数量
article_up_count = models.IntegerField(blank=True) #文章点赞数量
article_comment_count = models.IntegerField(blank=True) #文章评论数量
class Meta:
# managed = False
managed = True
db_table = 'wyy_articles'
class Article_comment(models.Model):
#文章评论和文章是多对一的关系
a_comment_id = models.IntegerField(primary_key=True)
aid = models.ForeignKey('Articles', models.DO_NOTHING,db_column='aid',related_name='a_comments',null=True) #针对哪一个文章的评论
#可以通过.comments查询到一篇文章的所有评论
uid = models.ForeignKey('User', models.DO_NOTHING,db_column='uid', related_name='a_comments', null=True) #是哪位用户发表的文章评论
#可以通过.comments 查询到一个用户的所有评论
#评论的点赞数量,评论发出的时间,评论的内容
up_count = models.IntegerField(blank=True)
pub_time = models.DateTimeField(blank=True) #评论的发布时间
content = models.CharField(max_length=200,blank=True) #评论的内容
class Meta:
# managed = False
managed = True
db_table = 'wyy_article_comment'