如何使字段只能从django Model中的get和set方法访问

时间:2015-05-23 09:52:49

标签: django django-models

我正在django-framework中编写一个小型消息传递应用程序。我希望我能够看到' seen_time'和'见过'字段只能通过我的书面方法设置。我能这样做吗?请指明

以下是我的'消息'模型

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

1 个答案:

答案 0 :(得分:1)

一种常见的情况是在进行特定请求时让视图更新模型。因此,在请求时(当然也可能是ajax请求),您可以随意更新它。总结一下:

  • urls.py
  • 中添加网址
  • views.py中添加一个视图,用于处理特定请求并更新模型。

另一种可能性是让您的模型在保存模型时自动更新某些字段。这可以使用signals来完成,例如pre_save。但是仍然需要在视图中保存模型。