我有两种模式:
class Task(models.Model):
pass
class Result(models.Model)
task = models.ForeignKey('tasks.Task', related_name='results')
enabled = models.BooleanField('enabled', default=False)
我想得到一个带有过滤结果的任务,用于我的临时计算:
task = Task.objects.first()
results = task.results.filter(enabled=True)
task.results.set(results)
这是工作代码,但任务结果将在第一次使用后重写。如何获得新的任务与过滤结果没有任务.结果重写?我只需要将更改的任务实例保存在内存中。你知道吗
我的最后一点是将任务传递给序列化程序。但在我看来,序列化程序必须序列化,而不过滤某些内容。因为过滤的上下文在其他子模块中可能不同。你知道吗
class ResultSerializer(DynamicFieldsMixin, ModelSerializer):
class Meta:
model = Result
class TaskResultsSerializer(ModelSerializer):
results = ResultSerializer(many=True, read_only=True)
class Meta:
model = Task
从您选择的序列化程序类来看,似乎您正在使用Django REST框架进行序列化。如果这是正确的,我将通过在
Task
模型上声明一个可调用的函数来处理这个问题,该函数返回您想要包含的结果,然后显式地为这个可调用函数指定一个序列化器字段。例如:这是未经测试,但它似乎应该工作。你知道吗
集合用于替换相关对象。你得到结果然后重新设置。我不知道为什么?也许你在尝试更新?你知道吗
https://docs.djangoproject.com/en/2.2/ref/models/querysets/#django.db.models.query.QuerySet.update
相关问题 更多 >
编程相关推荐