2009-12-24 6 views

Répondre

4
displayname = firstname + lastname or username 

fonctionnera si prenom et nom a une longueur de 0 chaîne vide

1

Quelque chose comme:

name = data.Name or "Default Name" 
2

Ok, je suppose que vous vouliez dire __unicode__() méthode. Essayez quelque chose comme ça (non testé, mais vraiment proche d'être correct):

from django.utils.encoding import smart_unicode 
def __unicode__(self): 
    u = self.user 
    if u.firstname and u.lastname: 
     return u"%s %s" % (u.firstname, u.lastname) 
    return smart_unicode(u.username) 

Je viens de réaliser que vous avez demandé l'idiome Python, pas le code Django. Tant pis.

6
displayname = firstname+' '+lastname if firstname and lastname else username 
+1

me devança. +1 bébé! – jathanism

+0

+1 Vous répondez est assez aimable que moi: P – YOU

+0

Je déteste concaténer des chaînes avec un + - ce n'est pas assez sûr, surtout pour un champ modifiable par l'utilisateur tels que les noms et prénoms. – shawnr

0

Mon schéma aurait None comme premier ou nom unset, donc la réponse de Frederico ne fonctionnerait pas. Alors:

print ("%s %s" % (firstname, lastname) 
     if not (firstname and lastname) 
     else username) 
4

Je pense que cette question est traitée mieux dans les modèles avec quelque chose comme:

{{user.get_full_name | default: user.username}}

Qui utilise Django inclus « par défaut "filtre. Il existe également un filtre "default_if_none" si vous êtes spécifiquement concerné par une valeur None, mais souhaitez autoriser une valeur vide (c'est-à-dire ''). Le filtre "par défaut" se déclenchera à la fois sur une valeur None et une valeur "".

Voici le lien vers la documentation de Django sur elle: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

Questions connexes