2013-11-28 2 views
3

Как получить имя класса в строке ContentType? Я пробовал это так, но это не получилось:Как получить имя класса ContentType в django

class StreamItem(models.Model): 
    user = models.ForeignKey(User) 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    pub_date = models.DateTimeField(default=datetime.now) 

    content_object = generic.GenericForeignKey('content_type', 'object_id') 
    content_class = content_type.__name__ 

    def __unicode__(self): 
     return self.content_class 

Любая помощь будет очень признательна! Спасибо.

ответ

2

UPDATE: После уточнения задачи, которая просит для модели назвать способ доступа к нему через атрибут model, вы можете получить доступ к нему во время выполнения таким образом:

<STREAMING_ITEM_INSTANCE>.content_type.model 

Я тестировал это:

from testso_app.models import StreamItem 
from django.contrib.auth.models import User 
from django.contrib.contenttypes.models import ContentType 
a = User.objects.all()[0] 
cctt = ContentType.objects.all() 
si = StreamItem(user=a, content_type=cctt[0], object_id=1) 
si.content_type.model 

и получил: u'author'

+0

Спасибо за ответ! Не могу ли я использовать его как атрибут? – Aamu

+0

Я попробовал. Но это дает мне имя как ContentType, а не фактическое имя модели. – Aamu

+0

Извините, что я плохой, я отредактировал ответ – juliocesar

Смежные вопросы