2009-12-24 5 views

Odpowiedz

4
displayname = firstname + lastname or username 

będzie działać, jeśli imię i nazwisko ma 0 Długość pusty ciąg

1

Coś jak:

name = data.Name or "Default Name" 
2

Ok, jestem przy założeniu, że oznaczało __unicode__() metoda. Spróbuj coś takiego (nie testowane, ale prawdziwe blisko jest poprawne):

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) 

Właśnie sobie sprawę, poprosił o idiom Python, nie kod Django. No cóż.

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

beat mnie do niego. +1 dziecko! – jathanism

+0

+1 Odpowiedź jest na tyle dobra ode mnie: P – YOU

+0

Nienawidzę łączenia ciągów z + - to nie jest wystarczająco bezpieczne, szczególnie dla pola edytowalnego przez użytkownika, takiego jak imię i nazwisko. – shawnr

0

Mój schemat miałby None jako wyłączonym studiów pierwszego lub Nazwisko, więc odpowiedź Frederico nie będzie działać. Więc:

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

Myślę, że ten problem jest lepiej obsługiwane w szablonach z czymś takim:

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

który używa Django domyślnie włączone” "filtr. Istnieje także filtr "default_if_none", jeśli szczególnie niepokoi cię wartość None, ale chcesz zezwolić na wartość pustą (tj. ""). "Domyślny" filtr wyzwoli zarówno wartość None, jak i wartość "".

Oto link do Django docs na nim: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

Powiązane problemy