|  | 
 
| 
本帖最后由 abababab 于 2023-4-25 23:33 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 以下是一个示例代码
 
 
 models.py
 
 复制代码
from django.db import models
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
    age = models.IntegerField()
    phone = models.IntegerField()
    def save(self, *args, **kwargs):
        # 在保存前更新指定一列数据
        
        super(Profile, self).save(*args, **kwargs)
 
 view.py
 
 复制代码
def activate(request, uid):
            profile = Profile.objects.get(user_id=uid)
            profile.phone = "123456789"
            psave=profile.save()
           print(psave)
 
 Django models 自定义一个Profile数据表,保存其中一值 phone 问题?
 程序返回 None
 但实际数据没有存进去的。
 请教下大佬了,感谢!
 
 
 
 
 
很高兴您找到了问题所在。如果您想要确定是哪个函数调用了 `save()` 方法并覆盖了数据,您可以尝试在 `Profile` 模型的 `save` 方法中添加一些调试信息。这将帮助您追踪到调用 `save()` 的函数。在 `models.py` 中,可以更新 `Profile` 模型的 `save` 方法,如下所示:
 
 复制代码import traceback
class Profile(models.Model):
    ...
    
    def save(self, *args, **kwargs):
        # 在保存前更新指定一列数据
        # 添加调试信息,显示调用 save 方法的位置
        print(f"Saving Profile for user: {self.user.username}")
        traceback.print_stack(limit=4)  # 限制输出堆栈的深度,以便于阅读
        
        super(Profile, self).save(*args, **kwargs)
 使用 `traceback.print_stack()` 函数,您可以在控制台中看到调用 `save()` 方法的堆栈跟踪。这将帮助您确定是哪个函数导致了问题。在修复问题后,您可以将调试信息从 `save()` 方法中删除。
 | 
 |