如何处理django中的计算模型?

时间:2018-01-17 13:49:05

标签: django django-rest-framework

从名为Suggestion的模型中,我需要计算另一个名为Task的模型。

Task个对象不需要在数据库中存储任何内容,因为它是使用Suggestion字段完全计算的。

一个例子是使用字段批准建议的任务:

  • approver
  • state
  • approving_deadline

他们是django中的标准方式来处理这种不需要存储任何信息但是使用其他模型完全计算的模型吗?

1 个答案:

答案 0 :(得分:0)

您应该使用SerializerMethodField

  1. 在您的序列化程序中,为您的任务创建一个字段,如task = serializers.SerializerMethodField()
  2. 但是,在序列化程序中,创建一个名为get_taks(self, obj)的方法。 obj是您当前的Suggestion,您需要从中计算任务并将其作为序列化数据(Task主键使用task.pk或序列化{{1}返回使用Task,或者你喜欢的任何东西)。
  3. 例如:

    TaskSerializer(task).data

    您可以在Django REST Framework docs

    上阅读有关SerializerMethodField的更多详细信息