gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:22:03 25 4
gpt4 key购买 nike

如何设置一个字段

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com