Rumah > Soal Jawab > teks badan
Seperti yang ditunjukkan dalam kod berikut, objek instance akan diperolehi berdasarkan ID instance Seperti yang kita sedia maklum, jika ID tidak wujud semasa mendapatkan, pengecualian akan berlaku, tetapi penapis tidak.
Jadi, saya ingin bertanya kepada semua orang, dalam situasi seperti ini, adakah lebih baik menggunakan get dan mengendalikan pengecualian, atau adakah lebih baik menggunakan penapis untuk melakukannya dengan lebih baik?
def get_city_image(self, instance):
if instance.city_id:
try:
city_image = City.objects.get(id=instance.city_id).image.url
# city_image = City.objects.filter(id=instance.city_id).last().image.url
except Exception, e:
city_image = None
else:
city_image = None
return city_image
淡淡烟草味2017-06-12 09:23:33
def get_city_image(self, instance):
try:
city_image = City.objects.get(id=instance.city_id).image.url
except City.DoesNotExist:
#捕获City不存在的异常, 抛出异常或是自己处理
city_image = None
return city_image
阿神2017-06-12 09:23:33
Isu pemilihan rangka kerja dan reka bentuk, Django melontar pengecualian, rangka kerja lain terus mengembalikan Tiada, ia bergantung pada yang mana satu yang anda suka, saya tidak suka jenis lontaran pengecualian secara langsung, cuma buat kaedah anda sendiri
Pautan rujukan: sambungan django/patch QuerySet
PHP中文网2017-06-12 09:23:33
Kecekapan menggunakan filter.first adalah sama dan tidak terkecuali akan dilemparkan