suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Python – Django-Modell verwendet Get oder Filter

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

Antworte allen(3)Ich werde antworten

  • 淡淡烟草味

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

    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

    Antwort
    0
  • 阿神

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

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

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

    Antwort
    0
  • PHP中文网

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

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

    Antwort
    0
  • StornierenAntwort