关于Django中ORM框架

创建模型进行数据库的迁移
python manage.py makemigrations
python manage.py migrate

模型中的参数

1.关于blank=Truenull=True
  • blank用于表单的认证,被设为blank=False(默认为False)的字段在填写表单时不能为空。
  • null用于规定数据库中的列的非空性,被设为null=False(默认为False)的字段在数据库中对应的列不能为空(用SQL来说明就是为该列添加了NOT NULL的约束)。
2. 关于ForeignKey中的参数

一对多关系中
比如: 一篇文章有多个评论
articlecomment为一对多关系
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'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值