Я написал этот класс в соответствии с документацией, чтобы иметь возможность голосовать за что-либо с идентификатором в приложении:
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: виртуальный идентификатор?
Потому что в моем понимании, когда я писал:
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', а затем, в некоторой степени, его идентификатор: это не так.