首页 > 解决方案 > Django:utils.py - 名称“short_url”未定义

问题描述

我在short_url从 UrlModels 查询字段时看到此错误:

NameError at /admin/shortner/urlmodels/5/change/
name 'short_url' is not defined
Request Method: POST
Request URL:    http://127.0.0.1:8000/admin/shortner/urlmodels/5/change/
Django Version: 3.1.6
Exception Type: NameError
Exception Value:    
name 'short_url' is not defined

utils.py

def code_generator(size=6, chars=string.ascii_lowercase + string.digits ):
    return ''.join(random.choice(chars) for i in range(size))

def create_shortcut(instance, size=6):
    new_code = code_generator(size=size)
    urlmodel = instance.__class__
    print(instance)
    print(instance.__class__)
    query_exists = urlmodel.objects.filter(short_url==new_code).exists()
    if query_exists:
        return create_shortcut(size=size)
    return new_codefrom 

models.py

class UrlModels(models.Model):
    url = models.CharField(max_length=1000)
    short_url = models.CharField(max_length=50, unique=True, blank=True)

    def save(self, *args, **kwargs):
        if self.short_url is None or self.short_url == '':
            self.short_url = create_shortcut(self)
        super().save(*args, **kwargs)
    
    def __str__(self):
        return self.url

标签: pythondjangomodel

解决方案


推荐阅读