Django:models.py中的def save

问题描述

我正在尝试在我的models.py中添加保存功能,但看来我做错了什么。用户必须输入名字和姓氏。在没有他或她输入任何更多数据的情况下,应该用这些字段的组合填充我的models.py中的另一个字段。

models.py:

class Coworker(models.Model):
    first_name = models.CharField(max_length=50,null=False,blank=False)
    last_name = models.CharField(max_length=50,blank=False)
    full_name = models.CharField(max_length=100,blank=False)

    def save(self,*args,**kwargs):
        self.full_name = self.first_name + " " + self.last_name
        super().save(*args,**kwargs)

这甚至可能吗?感谢您的所有帮助。

周末愉快!

解决方法

请不要。这是冗余数据。事实证明,即使在同一数据库上,保持数据同步也比乍看之下更具挑战性。 Django还具有多个功能,例如.update(…) [Django-doc],用于更新表中的记录,但绕过了title调用。

例如,您可以使用在Django / Python级别运行时将计算.save()的属性:

full_name

例如,如果您希望能够在class Coworker(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) @property def full_name(self): return f'{self.first_name} {self.last_name}'上进行过滤,则可以使用Concat [Django-doc]进行注释:

full_name