python - django model是用get还filter
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-12 09:21:33
[Python讨论组]

如下面代码,会根据实例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
女神的闺蜜爱上我
女神的闺蜜爱上我

全部回复(3)
淡淡烟草味
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
阿神

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

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

PHP中文网

用filter.first 效率是一样的,并且不会抛异常

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号