擅长:python、mysql、java
<p>您可以使用<code>GenericForeignKey</code>关系来解决这个问题</p>
<pre><code>from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
class RankItem(models.Model):
rank = models.IntegerField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
def __unicode__(self):
return self.rank
</code></pre>
<p>一个普通的ForeignKey只能“指向”另一个模型,这意味着如果RankItem模型使用ForeignKey,它必须选择一个并且只能选择一个模型来存储标记。<a href="https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#django.contrib.contenttypes.generic.GenericForeignKey" rel="nofollow">contenttypes</a>应用程序提供了一种特殊的字段类型,它可以解决这个问题,并允许与任何模型建立关系</p>