首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >django内容类型-如何获取内容类型的模型类来创建实例?

django内容类型-如何获取内容类型的模型类来创建实例?
EN

Stack Overflow用户
提问于 2011-03-22 10:33:20
回答 2查看 20.2K关注 0票数 30

我不知道标题是否清楚,我想要做的是下一个案例:

代码语言:javascript
复制
>>> 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)这样的事情,让这个模型表单准备好使用。

提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-22 10:38:51

您需要创建该类的一个实例。ct.model_class()返回类,而不是它的实例。尝试以下操作:

代码语言:javascript
复制
>>> 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()
票数 50
EN

Stack Overflow用户

发布于 2011-03-22 10:36:39

iPython或autocomplete是你最好的朋友。您的问题只是在Model本身调用了save。您需要在实例上调用save。

代码语言:javascript
复制
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(...)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5386104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档