django中如何获取特定的contenttype?


django中, 希望一个函数更加的通用,比如删除。也就是说,这个删除函数可以作用于任意的model中的任意实例。参数是model名和实例id。请问该如何实现?

contenttype 开发 django

24hours 10 years, 3 months ago

解决这个问题的关键是你取得对应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

Your Answer