2016-04-06 46 views
1

Başka bir modelden türetilen bir proxy modelim var. Şimdi bu proxy modelinin nesnesini yaratıyorum ve ContentType.objects.get_for_model (obj) öğesini kullanarak içerik türü nesnesini bulmaya çalışıyorum, bana proxy model içerik türünü vermek yerine temel sınıf içerik türü nesnesini döndürür. Ben django 1.7.8 kullanıyorum. ContentType.objects.get_for_model (obj) bir proxy model nesnesinde kullanıldığında temel sınıf modelini döndürme

class BaseModel(models.Model): 
    field1 = models.CharField(max_length=200) 
    field1 = models.CharField(max_length=200) 


class ProxyModel(BaseModel): 
    class Meta: 
     proxy = True 

şimdi

proxy_obj = ProxyModel.objects.get(field1=1) 

vekil modelinin bir nesne alma ve proxy_obj

content_type = ContentType.objects.get_for_model(proxy_obj) 

içerik türü sınıfını bulmaya çalışırken Ama bu bana içerik türü nesnesini verir am ProxyModel yerine BaseModel. Bu neden saçma bir şekilde davranıyor? Yoksa yanlış bir şey mi yapıyorum? get_for_model yöntemi için django-Dokümanlar

cevap

3

:

model sınıf veya bir modelin bir örneği, ya alır ve bu modeli temsil eden ContentType örneği döndürür. Bir proxy modelinin ContentType getirilmesini sağlar.

Bunu, get_for_model() ile for_concrete_model=False geçmek zorunda: bir proxy modelinin ContentType'ı almak için

content_type = ContentType.objects.get_for_model(proxy_obj, for_concrete_model=False) 
0

, sen get_for_model() içine Yanlış argüman for_concrete_model = geçmek gerekir.

Örnek:

content_type = ContentType.objects.get_for_model(proxy_obj, 
               for_concrete_model=False) 

fazla bilgi için official docs bakınız.