django中如何获取特定的contenttype?
django中, 希望一个函数更加的通用,比如删除。也就是说,这个删除函数可以作用于任意的model中的任意实例。参数是model名和实例id。请问该如何实现?
24hours
10 years, 3 months ago
Answers
解决这个问题的关键是你取得对应ContentType的实例。这里介绍几种方法
直接 get
from django.contrib.contenttypes.models import ContentType
user_type = ContentType.objects.get(app_label="auth", model="user")
user_type = ContentType.objects.get(model="user")
# but this can throw an error if you have 2 models with the same name.
使用django的get_model方法
from django.db.models import get_model
user_model = get_model('auth', 'user')
实例代码:
ctype = ContentType.objects.get(model='user')
related_to_user = Room.objects.filter(content_type=ctype)
具体还可以参考相关文档
luoluo
answered 10 years, 3 months ago