1

単純化されたモデルでは:

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でもありません。より良い方法はありますか?

4

2 に答える 2

1

のインスタンスがあるisinstance(object, Class)かどうかをテストするために使用できます。objectClass

したがって、あなたの例ではこれを試してください:

if notification.content_type:
    if isinstance(notification.content_type, Person):
        print "content_type is of Person class"
于 2013-07-25T08:42:50.020 に答える