2009-12-24 4 views

cevap

4
displayname = firstname + lastname or username 

ad ve soyadı

1

şey gibi:

name = data.Name or "Default Name" 
2

Tamam 0 uzunluğu boş dize varsa, sana __unicode__() demek sanıyorum çalışacak yöntem. Böyle bir şey deneyin (değil test, ancak doğru olmak gerçek yakın):

Sadece Python deyim değil, Django kod istedi gerçekleştirilen
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) 

. Oh iyi. Frederico'nın cevabı işe yaramaz böylece

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

Beni ona yendi. +1 bebeğim! – jathanism

+0

+1 Cevabınız benden yeterince naziksiniz: P – YOU

+0

Dizeleri bir + ile birleştirmekten nefret ediyorum - özellikle güvenli ve güvenli bir şekilde değil, özellikle kullanıcı adında ve soyadı gibi düzenlenebilir bir alan için. – shawnr

0

Benim şema, bir tanımsız birinci veya lastname olarak None olurdu. Yani:

{{user.get_full_name | varsayılan: user.username}}

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

ben bu konunun daha iyi gibi bir şeyle şablonları ele düşünüyorum Django adlı dahil kullanır

"Varsayılan filtre. Ayrıca, bir None değeriyle ilgili endişeleriniz varsa, ancak boş bir değere izin vermek istiyorsanız "default_if_none" filtresi de vardır (örn. ''). "Varsayılan" filtre, hem Bir Yok hem de bir "" değeri üzerinde tetiklenir.

Burada üzerinde Django dokümanlar bağlantısı şudur: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default