2011-02-01 23 views
31

Giả sử tôi đang ở trong mã lưu. Làm thế nào tôi có thể có được tên của mô hình hoặc loại nội dung của đối tượng và sử dụng nó?Làm cách nào để lấy tên của mô hình hoặc loại nội dung của đối tượng Django?

from django.db import models 

class Foo(models.Model): 
    ... 
    def save(self): 
     I am here....I want to obtain the model_name or the content type of the object 

Mã này hoạt động, nhưng tôi phải biết model_name:

import django.db.models 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get(model=model_name) 
model = content_type.model_class() 

Trả lời

53

Bạn có thể lấy tên mô hình từ các đối tượng như thế này:

self.__class__.__name__ 

Nếu bạn thích nội dung loại, bạn sẽ có thể nhận được như thế này:

ContentType.objects.get_for_model(self) 
+0

Nếu bạn có một công cụ trình duyệt cơ sở dữ liệu, bạn có thể thấy rằng một django_content_type được tạo ra. Nó chứa một số trường, như tên, app_label và mô hình. Tôi cần lấy thông tin mô hình đó từ lớp tôi đang ở. – Seitaridis

+1

Trường mô hình là một chuỗi ký tự thường và nó bắt nguồn từ tên lớp. – Seitaridis

+1

Sau đó, hãy làm điều gì đó như 'ct = ContentType.objects.get_for_model (self)', theo sau là 'return ct.app_label' hoặc bất kỳ thuộc tính ContentType nào bạn cần. – gravelpot

Các vấn đề liên quan