首頁  >  問答  >  主體

python - django model是用get還filter

如下面程式碼,會根據實例ID取得實例對象,大家知道get的時候如果id不存在會出現異常,但是filter不會。
那麼,請問大家,像類似這種情況是用get然後處理異常要好呢,還是filter來做呢,哪種更規範?

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
女神的闺蜜爱上我女神的闺蜜爱上我2686 天前799

全部回覆(3)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:23:33

    雷雷

    回覆
    0
  • 阿神

    阿神2017-06-12 09:23:33

    框架選擇設計問題,django 是扔異常,別的框架直接返回None,看你喜歡那種,我不喜歡這種直接扔異常,直接補一個自己的方法就行了

    參考連結: django 擴充/補丁 QuerySet

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-12 09:23:33

    用filter.first 效率是一樣的,並且不會拋異常

    回覆
    0
  • 取消回覆