hatası verir. 'Friend_q' User.username içinde DEĞİLDİR ... hata verecektir. Önerilen taktik nedir? Django sorgusu döndürmediğinde ne yapmalı? Bana
Eğer içinde bir şey yokken Sorgu nesnesini değerlendirmek için çalışıyoruz çünkücevap
Eğer friend_q veritabanında bir kullanıcı bulunmuyorsa, to_friend boş bir listeye eşit olacaktır.
>>> from django.contrib.auth.models import User
>>> User.objects.filter(username='does-not-exist')
[]
Ancak, belirli bir girdiyi arama için olsun() yöntemini kullanmak daha iyidir: Artık DoesNotExist durum yakalamak ve uygun önlemleri alabilir
>>> User.objects.get(username='does-exist')
<User: does-exist>
>>> User.objects.get(username='does-not-exist')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.5/django/db/models/manager.py", line 120, in get
File "/usr/lib/python2.5/django/db/models/query.py", line 305, in get
DoesNotExist: User matching query does not exist.
. [1 0] 'içinde tek bir nesne ile bir listesini verir OP kod ise
try:
to_friend = User.objects.get(username=friend_q)
except User.DoesNotExist:
# do something, raise error, ...
Eğer bir hata alıyorsanız nedenidir ederiz. Sonunda [0: 1] ilk öğeyi boş bir listeden çıkarmaya çalışıyor. İfadeyi aşağıda olduğu gibi biraz ayırırsanız, bir öğe almadan önce boş bir liste olup olmadığını kontrol edebilirsiniz.
to_friends = User.objects.filter(username=friend_q)
if to_friends:
to_friend = to_friends[0]
FWIW, adı benzersizdir. Yani U
from django.shortcuts import get_object_or_404 to_friend = get_object_or_404(User,username=friend_q)
hatayı önlemek için, kullanıcı yok olduğunda bir 404 yükseltmek istiyorsanız
to_friend = User.objects.get(username=friend_q)
kullandığınızda, olabilir de olabilir, sadece koymak olabilir blok hariç, çok pythonic denemek. Bu ortak bir gereklilik olduğu için
try: to_friend = User.objects.get(username=friend_q) except User.DoesNotExist: to_friend = None
, sen UserManager üzerinde
get_user_or_none
tanımlayan düşünün ve get_object_or_404 benzerNone
dönüşü, gerektirecektir diğer yöneticiler olmalıdır. Bu, django çekirdeği için düşünülmüştü, ama hiçbir sebepten ötürü dahil edilmedi. Yine de,None
geri ihtiyacı olan modeller için kullanışlı, 4 satırlık bir işlev.
- 1. ne yapmalı?
- 2. @RenderBody() ile ne yapmalı?
- 3. Windows DPAPI - entropiyle ne yapmalı?
- 4. NSURLErrorDomain -999 hakkında ne yapmalı?
- 5. PDO_SQLITE sürücüsü mevcut değil .. ne yapmalı?
- 6. Ne yapmalı? - java.io.FileNotFoundException: İçerik sağlayıcı yok mu?
- 7. 'this-> template [somename]' a ne yapmalı?
- 8. Hayır <optional> Hayır - ne yapmalı?
- 9. Tarayıcılarda HTML 5 sesindeki uyumsuzluklarla ne yapmalı?
- 10. Eclim - org.eclim.java.run.mainclass'ı ayarlamak için ne yapmalı?
- 11. django-taggit derin ilişki sorgusu
- 12. Nasıl yapmalı?
- 13. Django Kullanıcı veya Profil modeline ForeignKey yapmalı mıyım?
- 14. OR durumu kullanılarak Django sorgusu
- 15. django dinlenme çerçeve listesi sorgusu
- 16. PayPal "Güvenlik başlığı geçerli değil" hatası. Bununla ne yapmalı?
- 17. TYPO3 güvenlik güncelleştirmesinden sonra 13.09.2016 tarihinden itibaren ne yapmalı?
- 18. Search2 hiçbir sonuç döndürmediğinde Select2 filtre değerleri kayboluyor
- 19. javax.mail mail.debug = true seçeneği ne yapmalı? yapılandırma özelliklerinde
- 20. İki kütüphane tam olarak aynı sınıflara sahipse ne yapmalı?
- 21. Phonegap/iPad - UTI'ler - Doc türleri ... gelen URL ile ne yapmalı
- 22. Julia önceden derlenmiş Linux ikili ile ne yapmalı?
- 23. Android Studio build dizinindeki .rawproto dosyalarıyla ne yapmalı?
- 24. Bir posix kapatma çağrısı başarısız olursa ne yapmalı?
- 25. Firefox addon geliştirme. Çok sayıda uyarı ile ne yapmalı?
- 26. django - media_root veya static_root'u ne zaman kullanmalıyım?
- 27. Neden bu mysql sorgusu bana çöp sonuçları veriyor?
- 28. Django: Özel işlevine göre filtre sorgusu
- 29. Bu SQL sorgusu ne yapıyor? Lütfen açıklayınız
- 30. Django "uygulaması" ne anlama geliyor?
"to_friends [0]", tek bir nesne verecektir. Tam olarak aynı şey değil! -) –
to_friends asla Hiçbiri olmayacak - sonuç hala hiçbir sonuç döndürmeyen bir sorgu nesnesi olacak. –
Oh ve ayrıca, None nesnesi tekil olarak garantilidir, bu nedenle kimlik karşılaştırmasını kullanarak daha iyi olursunuz, yani: "to_friends, None değilse:" –