SORU
19 HAZİRAN 2009, Cuma


Filtre Django karşı tek nesne.

Bazı meslektaşları ile bu konuda bir tartışma vardı. Tercih edilen bir yol sadece bir bebek beklerken Django bir nesne almak için var mı?

İki açık yolu vardır:

   try: 
      obj = MyModel.objects.get(id=1)
   except MyModel.DoesNotExist:
      # we have no object!  do something
      pass

ve

   objs = MyModel.objects.filter(id=1)
   if len(objs) == 1:
      obj = objs[0]
   else: 
      # we have no object!  do something
      pass

İlk yöntem daha doğru davranışsal olarak görünüyor, ama bazı yükü doğurabilir kontrol akışı istisnalar kullanır. İkinci dolambaçlı ama hiç bir istisna yetiştirmek istemiyorum.

Herhangi bir düşünce olan bu tercih edilir? Hangisi daha etkili olur?

CEVAP
19 HAZİRAN 2009, Cuma


get() özellikle bu dava için verilmiştir. Bunu kullanın.

Seçenek 2 neredeyse tam olarak nasıl get() yöntem aslında uygulanan Django, bu yüzden olmalı hayır "performans" fark (ve aslında bu düşündüğünü gösterir misin aykırı bir kardinal kurallar programlama, yani çalışan için optimize kod önce bile süredir yazılı ve profilli -- kadar Kodu ve götürebilirim, bilmiyorum nasıl olacak gerçekleştirmek ve optimize etmeye çalışıyorum önce sonra bir yolunu ağrısı).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • steeletraining

    steeletraini

    28 NİSAN 2010
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010