Skip to main content
 首页 » 编程设计

python之Django 返回属性 if not null else 返回方法结果

2025年05月04日91artech

我试图使用方法装饰器创建一个动态属性,我遇到的问题是如果用户没有保存他/她自己的字段,我想使用这个字段。例如:

class Person(models.Model): 
    name = models.CharField(max_length=100, null=True, blank=True) 
 
    def __str__(self): 
        return self.name 
 
    @property 
    def name(self): 
        return self.name if self.name else "John" 

基本上,如果我在名称字段中找不到任何内容,我想返回“John”。但是,这样做时,Django 会提示,因为 self.name 正在查看名称函数而不是实际属性。

调用 Python 对象时超出最大递归深度

有没有一种方法可以引用不动产或者可能有其他方法来实现这一点?

请您参考如下方法:

一个简单的方法是重命名您的访问器方法/属性:

class Person(models.Model): 
    name = models.CharField(max_length=100, null=True, blank=True) 
 
    def __str__(self): 
        return self.name 
 
    def get_name(self): 
        return self.name if self.name else "John" 

然后当你有一个实例时:

person.get_name()