关于Model引入其他Model数据

 
在Model中引入其他Model数据时,要将import语句写在方法之中或类中,
不可直接在Model页面直接引入,否则会造成其他Model与Model间的循环引用
 
def unread_nums(self):
    #获取未读消息的数量
    from operation.models import UserMessage
 

 
为防止循环引用,在model设计时,类似:
用户评论课程功能
class CourseComments(models.Model):
    "课程评论"
    user = models.ForeignKey(UserProfile, verbose_name=u"用户")
    course = models.ForeignKey(Course, verbose_name=u"课程")
    comments = models.CharField(max_length=200, verbose_name=u"评论")
    add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
 
    class Meta:
        verbose_name = u"课程评论"
        verbose_name_plural = verbose_name

 

用户搜藏课程或机构或教师功能
class UserFavorite(models.Model):
    user = models.ForeignKey(UserProfile, verbose_name=u"用户")
    fav_id = models.IntegerField(default=0, verbose_name=u"数据id")
    add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
    fav_type = models.IntegerField(choices=((1, u"课程"), (2, u"课程机构"), (3, u"讲师")), default=1, verbose_name=u"收藏类型")
 
    class Meta:
        verbose_name = u"用户收藏"
        verbose_name_plural = verbose_name

 

用户选课功能
class UserCourse(models.Model):
    user = models.ForeignKey(UserProfile, verbose_name=u"用户")
    course = models.ForeignKey(Course, verbose_name=u"课程")
    add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
 
    class Meta:
        verbose_name = u"用户课程"
        verbose_name_plural = verbose_name

 

 
以上功能可单独设计在一个model内,避免循环model引用

 

 

posted @ 2020-09-22 19:29  Edward_han  阅读(389)  评论(0编辑  收藏  举报