Maison  >  Questions et réponses  >  le corps du texte

python - le modèle Django utilise get ou filter

Comme le montre le code suivant, l'objet instance sera obtenu en fonction de l'ID de l'instance. Comme nous le savons tous, si l'ID n'existe pas lors de l'obtention, une exception se produira, mais pas le filtre.
Donc, je voudrais demander à tout le monde, dans une situation comme celle-ci, est-il préférable d'utiliser get et de gérer l'exception, ou est-il préférable d'utiliser un filtre pour mieux le faire ? Lequel est le plus standardisé ?

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 Il y a quelques jours800

répondre à tous(3)je répondrai

  • 淡淡烟草味

    淡淡烟草味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

    répondre
    0
  • 阿神

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

    Problèmes de sélection et de conception du framework, Django lève des exceptions, les autres frameworks renvoient directement Aucun, cela dépend de celui que vous aimez, je n'aime pas lancer des exceptions directement, inventez simplement votre propre méthode

    Lien de référence : extension/patch Django QuerySet

    répondre
    0
  • PHP中文网

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

    L'efficacité de l'utilisation de filter.first est la même et aucune exception ne sera levée

    répondre
    0
  • Annulerrépondre