python - le modèle Django utilise get ou filter
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-12 09:21:33
0
3
870

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

répondre à tous(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
阿神

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

洪涛

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal