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
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
Kecekapan menggunakan filter.first adalah sama dan tidak terkecuali akan dilemparkan