马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 abababab 于 2023-4-25 23:33 编辑
以下是一个示例代码
models.pyfrom 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.pydef 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()` 方法中删除。
|