如何使字段只能从 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。但是您仍然需要在视图中保存您的模型。