python - 在 Django-rest-framework 中创建具有关系的模型

标签 python django-rest-framework

如何设置一个字段

is_read = models.IntegerField(choices=message_status, default=SENT)
message = models.CharField(max_length=1200)
sent_time = models.DateTimeField(auto_now_add=True)
read_time = models.DateTimeField()

这里的read_time应该是is_read变为1的时间

最佳答案

现在您的模型存在数据重复。事实上,is_read 可能是 0,但 read_time 已设置。您可以尝试定义 View 来防止这种情况发生,但这将具有挑战性:每个 View 都需要仔细编写以确保这一点。此外,您可以在 Django 之外操作数据库。

read_time 设置为空可能会更好:

from django.utils.timezone import now

class Message(models.Model):
    message = models.CharField(max_length=1200)
    sent_time = models.DateTimeField(auto_now_add=True)
    read_time = models.DateTimeField(<b>null=True</b>)

    @property
    def is_read(self):
        return <b>self.read_time is not None</b>

    @is_read.setter
    def is_read(self, read):
        if self.read != self.is_read:
            if read:
                self.mark_read()
            else:
                self.mark_unread()

    def mark_read(self, save=True):
        self.read_time = now()
        if save:
            self.save()

    def mark_unread(self, save=True):
        self.read_time = None
        if save:
            self.save()

因此,如果您将消息标记为已读,则将 read_time 保存到当前时间戳。此外,我们定义了一个属性 .is_read,如果 read_time 不是 None,则该属性为 True。您还可以设置 some_message.is_read = Trueread_time 更新为现在,并使用 some_message.is_read = False 设置 read_time 返回到 None

关于python - 在 Django-rest-framework 中创建具有关系的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57654537/

相关文章:

python - 如何做Pandas Groupby Ratio?

django-rest-framework - 我们可以在apiview类django rest框架中有多个get方法吗

python - Django rest_framework 3.22 多次更新创建对象而不是更新

python - 从第三方 api 返回项目列表的 DRF 方式是什么?

python - 如何使用 Visual Studio 的 Python 工具 (PTVS) 调试在本地 lighttpd 服务器上运行的 Python

python - 在 CSV 文件 python 中添加新行和现有迭代行

python - python sqlite3 是否在交互模式下释放仅内存数据库?

python - __contains__ 和 Python3.8 enum.Enum

Django REST framework : how to wrap the response with extra fields . ... 并在数据字段中提供当前响应

django - 在 Django Rest Framework 中上传文件并处理 zip 请求