2017-07-19 1 views
0

J'ai un modèle avec des propriétés personnalisées. Dans mon admin, j'affiche la valeur de retour du modèle. Les valeurs de retour de toutes les propriétés commencent par les mots suivants dans chaque enregistrement.Comment puis-je me débarrasser du mot-clé QuerySet en valeur retrun à partir du modèle en django

<QuerySet [ 

Je suis en train de se débarrasser de la <QuerySet [ d'apparaître dans chaque enregistrement comme indiqué dans l'image? Lorsque j'affiche la valeur de retour de get_followers, get_following, get_friends, toutes les valeurs de retour contiennent <QuerySet [

Une idée de comment je peux faire cela?

enter image description here

class Application(TimeStampModel): 
name = models.CharField(verbose_name='CI Name', max_length=100, unique=True) 
relationships = models.ManyToManyField('self', through='Relationship', 
             symmetrical=False, 
             related_name='related_to') 

def get_following(self): 

    return self.get_relationships(RELATIONSHIP_FOLLOWING) 


def get_followers(self): 
    return u'%s' % self.get_related_to(RELATIONSHIP_FOLLOWING) 

def get_friends(self): 

    return self.relationships.filter(
     to_apps__status=RELATIONSHIP_FOLLOWING, 
     to_apps__from_application=self, 
     from_apps__status=RELATIONSHIP_FOLLOWING, 
     from_apps__to_application=self) 

def __str__(self): 
    return "{}".format(self.name) 

RELATIONSHIP_FOLLOWING = 1 
RELATIONSHIP_BLOCKED = 2 
RELATIONSHIP_STATUSES = (
    (RELATIONSHIP_FOLLOWING, 'Following'), 
    # Following: denotes the relationship from the user, i.e. following 
    (RELATIONSHIP_BLOCKED, 'Blocked'), 
    ) 

Répondre

2

Lorsque vous u'%s' % self.get_related_to(RELATIONSHIP_FOLLOWING) vous utilisez le repr() du queryset, qui comprend le <QuerySet [ que vous ne voulez pas.

Une alternative pour obtenir une liste de chaînes pour les éléments de la queryset, et se joignent à ces ensemble:

def get_followers(self): 
    return ", ".join(str(x) for x in self.get_related_to(RELATIONSHIP_FOLLOWING))) 

Si vous utilisez réellement le queryset ailleurs dans votre code, puis créez une des méthodes distinctes (par exemple get_friends_display), et utilisez la nouvelle méthode dans le list_display de votre administrateur de modèle.

def get_friends_display(self): 
    return ", ".join(str(x) for x in self.get_friends()) 
+0

Fonctionne parfaitement. Maintenant, j'ai juste besoin de comprendre comment montrer le nombre d'amis en face de chaque application. Comme dans le panneau d'administration en face de chaque application, affichez le nombre d'amis (c'est-à-dire appname (5)) – Stryker