有没有方法既可以使用外键又不定死外键类型?
1.7k
等24人参与

题目描述:

在收藏功能设计的时候我们通过定义:

class UserFavorite(BaseModel):
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE, verbose_name="用户")
    fav_id = models.IntegerField(verbose_name="数据id")
    fav_type = models.IntegerField(choices=((1,"课程"),(2,"课程机构"),(3,"讲师")), default=1, verbose_name="收藏类型")

    class Meta:
        verbose_name = "用户收藏"
        verbose_name_plural = verbose_name

    def __str__(self):
        return "{user}_{id}".format(user=self.user.username, id=self.fav_id)

这里设计的时候确实比较灵活,但是在 django 中如果能定义成外键会更加的方便,能否在这里定义成外键呢?注意:课程中分析过,这里如果定义 course、courseorg、teacher 等外键虽然可以使用,但是字段浪费, 而且后期还增加了新的收藏类型我们就需要改表了,有没有方法可以解决这些问题:既可以使用外键,又不用定死外键类型?

思路点拨:

django 有 GenericRelation 和 GenericForeignKey 两个类型可以解决上述问题,但是这两个类型的理解需要我们理解到 django 的 contentType,所以这三个功能都需要理解到。

我的作业
去发布

登录后即可发布作业,立即

全部作业

数据加载中...

意见反馈 帮助中心 APP下载
官方微信