当前位置: 首页 > 后端技术 > Python

killerxadmin开发在线教育网站2_需求分析及表结构设计5_操作相关表结构设计

时间:2023-03-26 19:25:08 Python

用户操作UserAsk用户咨询fromapps.users.modelsimportBaseModelclassUserAsk(BaseModel):name=models.CharField(max_length=20,verbose_name='姓名')mobile=models.CharField(max_length=11,verbose_name='手机')course_name=models.CharField(max_length=50,verbose_name='课程名称')classMeta:verbose_name='用户咨询'verbose_name_plural=verbose_nameCourseCommentscoursecommentsfromdjango.dbimportmodelsfromdjango.contrib.authimportget_user_modelfromapps.users.modelsimportBaseModelfromapps.courses.modelsimportCourse#直接从设置中获取用户而不导入我们自己定义的UserProfile(因为有些时候我们需要使用django自带的用户管理)UserProfile=get_user_model()classCourseComments(BaseModel):user=models.ForeignKey(UserProfile,verbose_name='用户')course=models.ForeignKey(Course,verbose_name='course')comments=models.CharField(max_length=200,verbose_name='commentcontent')classMeta:verbose_name='coursecomment'verbose_name_plural=verbose_nameUserFavoriteuserfavoriteclassUserFavorite(BaseModel):user=models.ForeignKey(UserProfile,verbose_name='User')#不要使用下面两种方法,因为系统会变大,类型会增加,类也会变得越来越多,会导致外键过多,同时也需要修改表结构。添加一个新的类型需要添加一个新的列')fav_tag=models.IntegerField(choices=(('1','课程'),('2','课程组织'),('3','讲师')),default=1,verbose_name='Favorites')classMeta:verbose_name='UserFavorites'verbose_name_plural=verbose_nameUserMessageUserMessage具有读取状态classUserMessage(BaseModel):user=models.ForeignKey(UserProfile,verbose_name='user')message=models.CharField(max_length=200,verbose_name='content')has_read=models.BooleanField(default=False,verbose_name='readornot')classMeta:verbose_name='UserMessage'verbose_name_plural=verbose_nameUserCourse我的课程一个课程可以被多个用户学习,这是一个-对多关系从另一个角度来看,一个用户可以学习多门课程,这是一个多对多的关系。先设计成一对多的关系,以后再改。classUserCourse(BaseModel):#有两个外键user和coursecourse'verbose_name_plural=verbose_name添加on_delete=models.CASCADE之前的完整用户操作模型,以下完整版本为准fromdjango.dbimportmodelsfromdjango.contrib.authimportget_user_modelfromapps.users.modelsimportBaseModelfromapps。courses.modelsimportCourse#直接从设置中获取用户,无需导入我们自己定义的UserProfile(因为有时候我们需要用到django自带的用户管理)UserProfile=get_user_model()classUserAsk(BaseModel):name=models。CharField(max_length=20,verbose_name='name')mobile=models.CharField(max_length=11,verbose_name='手机')course_name=models.CharField(max_length=50,verbose_name='课程名称')classMeta:verbose_name='用户咨询'verbose_name_plural=verbose_nameclassCourseComments(BaseModel):user=models.ForeignKey(UserProfile,on_delete=models.CASCADE,verbose_name='User')course=models.ForeignKey(Course,on_delete=models.CASCADE,verbose_name='course')comments=models.CharField(max_length=200,verbose_name='评论内容')classMeta:verbose_name='CourseComments'verbose_name_plural=verbose_nameclassUserFavorite(BaseModel):user=models.ForeignKey(UserProfile,on_delete=models.CASCADE,verbose_name='User')#不要使用下面两种方法,因为系统会变大,type会变很多的话class会越来越多,会导致外键太多,也会需要修改表结构。添加新类型需要添加一列#course=models.ForeignKey(Course,verbose_name='course')#teacher=models.ForeignKey(Teacher,verbose_name='Lecturer')fav_id=models.IntegerField(verbose_name='dataid')fav_tag=models.IntegerField(choices=(('1','course'),('2','课程机构'),('3','讲师')),default=1,verbose_name='collectiontype')classMeta:verbose_name='usercollection'verbose_name_plural=verbose_nameclassUserMessage(BaseModel):user=models.ForeignKey(UserProfile,on_delete=models.CASCADE,verbose_name='User')message=models.CharField(max_length=200,verbose_name='content')has_read=models.BooleanField(default=False,verbose_name='readornot')classMeta:verbose_name='UserMessage'verbose_name_plural=verbose_nameclassUserCourse(BaseModel):#有两个外键用户和课程Meta:verbose_name='usercourse'verbose_name_plural=verbose_name

最新推荐
猜你喜欢