Типы содержимого django – как получить класс класса контента для создания экземпляра?

Я не знаю, ясно ли я с заголовком «quiestion», что я хочу сделать, это следующий случай:

>>> from django.contrib.contenttypes.models import ContentType >>> ct = ContentType.objects.get(model='user') >>> ct.model_class() <class 'django.contrib.auth.models.User'> >>> ct_class = ct.model_class() >>> ct_class.username = 'hellow' >>> ct_class.save() TypeError: unbound method save() must be called with User instance as first argument (got nothing instead) 

Я просто хочу создать экземпляры любых моделей, которые я получаю через типы контента. После этого мне нужно сделать что-то вроде form = create_form_from_model(ct_class) и получить эту модельную форму готовой к использованию.

Заранее спасибо!.

    2 Solutions collect form web for “Типы содержимого django – как получить класс класса контента для создания экземпляра?”

    Вам нужно создать экземпляр класса. ct.model_class() возвращает класс, а не экземпляр его. Попробуйте следующее:

     >>> from django.contrib.contenttypes.models import ContentType >>> ct = ContentType.objects.get(model='user') >>> ct_class = ct.model_class() >>> ct_instance = ct_class() >>> ct_instance.username = 'hellow' >>> ct_instance.save() 

    iPython или автозаполнение – ваш лучший друг. Ваша проблема заключается в том, что вы вызываете save на самой Model . Вам нужно вызвать save в экземпляре.

     ContentType.objects.latest('id').model_class() some_ctype_model_instance = some_ctype.model_class()() some_ctype_model_instance.user = user some_ctype_model_instance.save() some_instance = some_ctype.model_class().create(...) 
    Python - лучший язык программирования в мире.