如何使字段只能从 Django 模型中的 get 和 set 方法访问
How to make a field only accessible from get and set method in django Model
我正在用 django 编写一个小型消息传递应用程序-framework.I 希望我的 'seen_time' 和 'seen' 字段只能通过我编写的方法设置。我可以这样做吗?请指定
这是我的 'Messages' 模型代码
from django.db import models
from django.conf import settings
from datetime import datetime
# Create your models here.
class Messages(models.Model):
text = models.TextField(blank = False)
sender = models.ForeignKey(settings.AUTH_USER_MODEL, related_name = 'sender')
receiver = models.ForeignKey(settings.AUTH_USER_MODEL, related_name = 'receiver')
seen = models.BooleanField(default = False)
sent_time = models.DateTimeField(default = datetime.now)
seen_time = models.DateTimeField(null = True)
hide = models.BooleanField(default = False)
def set_seen_true(self):
self.seen = True
self.seen_time = datetime.now
一个常见的情况是在发出特定请求时让视图更新模型。因此在请求时(当然也可能是 ajax 请求),您可以根据需要更新它。所以总结一下:
- 在您的
urls.py
中添加一个url
- 在您的
views.py
中添加一个视图来处理特定请求并更新模型。
另一种可能性是让您的模型在保存模型时自动更新某些字段。这可以用 signals 来完成,例如 pre_save
。但是您仍然需要在视图中保存您的模型。
我正在用 django 编写一个小型消息传递应用程序-framework.I 希望我的 'seen_time' 和 'seen' 字段只能通过我编写的方法设置。我可以这样做吗?请指定
这是我的 'Messages' 模型代码
from django.db import models
from django.conf import settings
from datetime import datetime
# Create your models here.
class Messages(models.Model):
text = models.TextField(blank = False)
sender = models.ForeignKey(settings.AUTH_USER_MODEL, related_name = 'sender')
receiver = models.ForeignKey(settings.AUTH_USER_MODEL, related_name = 'receiver')
seen = models.BooleanField(default = False)
sent_time = models.DateTimeField(default = datetime.now)
seen_time = models.DateTimeField(null = True)
hide = models.BooleanField(default = False)
def set_seen_true(self):
self.seen = True
self.seen_time = datetime.now
一个常见的情况是在发出特定请求时让视图更新模型。因此在请求时(当然也可能是 ajax 请求),您可以根据需要更新它。所以总结一下:
- 在您的
urls.py
中添加一个url
- 在您的
views.py
中添加一个视图来处理特定请求并更新模型。
另一种可能性是让您的模型在保存模型时自动更新某些字段。这可以用 signals 来完成,例如 pre_save
。但是您仍然需要在视图中保存您的模型。