首页 >社区问答列表 >python - django model是用get还filter

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

  • 淡淡烟草味
  • 淡淡烟草味    2017-06-12 09:23:333楼

    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

    +0添加回复

  • 回复
  • 阿神
  • 阿神    2017-06-12 09:23:332楼

    框架选择设计问题,django 是扔异常,别的框架直接返回None,看你喜欢那种,我不喜欢这种直接扔异常,直接补一个自己的方法就行了

    参考链接: django 扩展/补丁 QuerySet

    +0添加回复

  • 回复