Python – Django-Modell verwendet Get oder Filter
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-12 09:21:33
0
3
843

Wie im folgenden Code gezeigt, wird das Instanzobjekt basierend auf der Instanz-ID abgerufen. Wie wir alle wissen, tritt eine Ausnahme auf, wenn die ID beim Abrufen nicht vorhanden ist, der Filter jedoch nicht.
Also möchte ich alle fragen: Ist es in einer solchen Situation besser, get zu verwenden und die Ausnahme zu behandeln, oder ist es besser, Filter zu verwenden, um es besser zu machen? Welches ist standardisierter?

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

Antworte allen(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

洪涛

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage