2010-04-06 6 views
-1
content_type = ContentType.objects.get_for_model(Map) 

    maps = maps.extra(select=SortedDict([ 
     ('member_count', MEMBER_COUNT_SQL), 
     ('topic_count', TOPIC_COUNT_SQL), 
    ]), select_params=(content_type.id,)) 

et le ContentType est:ce qui est ce 'content_type' signifie

class ContentType(models.Model): 
    name = models.CharField(max_length=100) 
    app_label = models.CharField(max_length=100) 
    model = models.CharField(_('python model class name'), max_length=100) 
    objects = ContentTypeManager() 

    class Meta: 
     verbose_name = _('content type') 
     verbose_name_plural = _('content types') 
     db_table = 'django_content_type' 
     ordering = ('name',) 
     unique_together = (('app_label', 'model'),) 

    def __unicode__(self): 
     return self.name 

    def model_class(self): 
     "Returns the Python model class for this type of content." 
     from django.db import models 
     return models.get_model(self.app_label, self.model) 

    def get_object_for_this_type(self, **kwargs): 
     """ 
     Returns an object of this type for the keyword arguments given. 
     Basically, this is a proxy around this object_type's get_object() model 
     method. The ObjectNotExist exception, if thrown, will not be caught, 
     so code that calls this method should catch it. 
     """ 
     return self.model_class()._default_manager.using(self._state.db).get(**kwargs) 

    def natural_key(self): 
     return (self.app_label, self.model) 

je veux savoir: quel est le 'content_type' utilisé pour ??

+4

Tout comme un indice: la documentation de Django Lire. C'est vraiment bon et couvre la plupart de vos questions. –

+1

Quel est le problème avec vous? S'il vous plaît lire la documentation de temps en temps! –

+0

Quel est le problème avec vous? Sb Boy? – zjm1126

Répondre

1

ContentType est utilisé où, disons que vous voulez utiliser un modèle auquel de nombreux modèles différents ont une clé étrangère et être capable de les obtenir tous dans une seule requête.

Par exemple: Vous avez un modèle de la ville, également modèle restaurant et un modèle de Pub.

Pour obtenir tous les restaurants et les pubs de la ville aura besoin de 2 requêtes,

city.restaurant_set.all() 
city.pub_set.all() 

En utilisant les clés étrangères génériques, vous pouvez faire une seule requête, que vous pouvez consulter de la documentation: http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#ref-contrib-contenttypes