Django : content_type_id in GenericForeignKey

标签 django python-3.x django-contenttypes

我根据文档编写了此类,以便能够对应用程序中具有 id 的任何内容进行投票:

class Vote(models.Model):

    class Meta:
        unique_together = ('voted_id', 'voter_id', 'content_type', 'vote_type')

    voted_id        = models.PositiveIntegerField()
    vote_type       = models.BooleanField(null=True)
    content_type    = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    voter_id        = models.PositiveIntegerField()
    content_object  = GenericForeignKey('content_type', 'voter_id')

    def __str__(self):
        return self.content_object

然后在数据库表中,我有 5 列:

id, voted_id, vote_type, voter_id, content_type_id

我不太明白 content_type_id 指的是什么:它是虚拟 ID 吗?

因为在我的理解中,当我写道:

from forum.models import User, Vote
kdelanyd = User.objects.get(username='kdelanyd')
v = Vote(content_object=kdelanyd, voted_id=1, vote_type=False)
v.save()

我认为 content_type 持有“kdelanyd”引用,然后,有点它的 id:它没有。

最佳答案

  • 在你的数据库中可能有表是 django_content_type。而content_typecontent_type_idcontent_object在这个表中引用。它用于定义诸如数据的“类型”之类的任何内容。

  • 轮子,它可能是汽车自行车的轮子。在这种情况下,carbicycle 是一个 content_objectdjango_content_type表中carbicycle的id为content_type_id

关于 Django : content_type_id in GenericForeignKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53840047/

相关文章:

python - 在 django 中正确使用具有自引用外键的子类/代理?

django - GenericForeignKey、ContentType 和 DjangoRestFramework

python - 收到错误并没有返回 HttpResponse 对象。到底是怎么回事?

python - Django 方法返回

mysql - Django:用户错误的外键

Python 枚举类构造与元类

python - Django:我必须在应用程序之前登录管理站点

python - 为什么 Python dis 模块无法反汇编这个 .pyc 文件?

python - 如何在 python 中合并或连接两个 midi 文件

mysql - Django中不同类型图片的数据库设计