检查content_object是否属于某种型号

时间:2013-07-25 05:16:55

标签: django django-models django-contenttypes

使用简化模型:

class Notification(models.Model):
    content_type = models.ForeignKey(ContentType, null=True)
    object_id = models.PositiveIntegerField(null= True)
    content_object = generic.GenericForeignKey('content_type', 'object_id')

class Person(models.Model):
    name = models.CharField(max_length=50)

如何检查Notification的content_object是否属于Person类?

if notification.content_type:
    if notification.content_type.name == 'person':
        print "content_type is of Person class"

这有效,但它感觉不对,也不是pythonic。还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用isinstance(object, Class)来测试objectClass的实例。

所以,在你的例子中试试这个:

if notification.content_type:
    if isinstance(notification.content_type, Person):
        print "content_type is of Person class"

答案 1 :(得分:0)

很简单,你可以试试

Person.__name__