我正在使用django 1.6
我的模型有ForeignKey
字段,引用了内核ContentType
模型:
class AuthEvent(models.Model):
user = models.ForeignKey(User, null=True, verbose_name='授权用户')
status = models.IntegerField(default=0, verbose_name='授权状态')
timestamp = models.DateTimeField(verbose_name='授权时间')
# Look at this field!
content_type = models.ForeignKey(ContentType, verbose_name='授权类型', null=True)
@classmethod
def make_auth(cls, user, tp=None):
# question here!
# I want to obtain a ContentType object refering to the tp model class
cls.objects.create(user=user, content_type=(tp)
例如,我有class A(models.Model)
,如何获得引用模型类A的ContentType
对象?
答案 0 :(得分:1)
我自己找到了答案,之前我认为它是classmethod
或staticmethod
,但发现它是经理的工厂方法:
>>> from django.contrib.auth.models import User
>>> user_type = ContentType.objects.get_for_model(User)
>>> user_type
<ContentType: user>
请参阅:https://docs.djangoproject.com/en/1.6/ref/contrib/contenttypes/#the-contenttypemanager