我不知道何时在 django.contrib.contenttypes 模块中使用类 GenericForeignKey
我刚刚阅读了上面的链接,但我不知道。
当我使用那个类?
那门课什么时候有用?
请举几个例子~
我不知道何时在 django.contrib.contenttypes 模块中使用类 GenericForeignKey
我刚刚阅读了上面的链接,但我不知道。
当我使用那个类?
那门课什么时候有用?
请举几个例子~
名字说分配,它是一个可以链接到任何内容类型的外键,即它可以与任何模型有关系。一个很好的例子是投票模型,您可以在其中对许多不同的对象进行投票,并且投票模型中的投票实例只会链接到您投票的模型。
class Article(models.Model):
.......
class Video(models.Model):
......
class Like(models.Model):
user = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
obj = generic.GenericForeignKey()
假设您有上面的这些模型,用户可以喜欢文章和视频,但您不想分别为文章喜欢和视频喜欢创建模型,因为它会在您的数据库中创建不必要的表,这可能会很痛苦,特别是如果您有分配可以喜欢的模型。为了解决这个问题,您创建了一个 Like 模型,它可以将您网站的所有喜欢存储在一个模型中。因此,当用户喜欢一篇文章时,即使 Article 模型没有明确的外键,like 实例也会与用户和文章有关系,这可以通过将 like 模型的内容类型设置为内容来完成您喜欢的模型的类型,在这种情况下为“文章”(不是您可以使用此:ContentType.objects。
article = Article.objects.get(pk=1)
article_ct = ContentType.objects.get_for_model(Article)
user = User.objects.get(username='admin')
Like.objects.create(user=user, content_type=article_ct, object_id=article.id)