DRF创建自定义关系数据或类似的smth



我有三个模型,一个叫Events,另一个叫Tasks。每个字段都有一个名为"截止日期"的字段
目标:我需要在我的自定义用户模型中创建一个名为Todis的部分和一个称为Overdose的部分,在那里我过滤截止日期小于现在的事件和任务并将它们放入todo,我需要过滤其他任务和事件对象以将它们放入overdoes。

from Myapp import Events
from MyOtherApp import Tasks
User(models.Model):
field1 = models...
field2 = models...
def smthing(self,args,kwargs);
# here create new field 
# Events and Tasks are other models
for event in Events.objects.all():
if event.deadline < now():
self.Ovedows.append(event)
for tasks in Tasks.objects.all():
if tasks.deadline < now():
self.Ovedows.append(tasks) 

我知道如何过滤和所有这些东西,但我需要一个想法来获得这些数据,并在用户模块中设置它们,而无需将它们一起创建新的数据字段,就像使用关系数据一样

我认为你需要做一些类似的事情

from datetime import datetime
class User(models.Model):
#....
def overdue_tasks(self):
now = datetime.now()
return Tasks.objects.filter(deadline__lt=now)
def overdue_events(self):
now = datetime.now()
return Events.objects.filter(deadline__lt=now)

deadline__lt表示截止日期小于等于deadline < now

由于您需要来自两个不同模型的它们,因此需要将它们合并到串行器中或前端中的某个位置

请注意,这目前为所有用户获取所有事件,您没有正确共享模型(没有共享任务和事件模型(,所以我不知道您是如何将它们链接到用户模型的,您应该在它们中有一个指向用户模型的外键。

假设你的任务模型看起来像这个

class Tasks(models.Model):
deadline = ...
user = models. ForeignKey(User)

查询将改为

self.tasks_set.filter(deadline__lt=now)
# and
self.events_set.filter(deadline__lt=now)

最新更新