如何通过Django中的模型类创建`ContentType`模型对象?

时间:2014-09-19 02:52:42

标签: python django model

我正在使用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对象?

1 个答案:

答案 0 :(得分:1)

我自己找到了答案,之前我认为它是classmethodstaticmethod,但发现它是经理的工厂方法:

>>> 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