我有以下三个模型定义
class Program(models.Model):
title = models.CharField(max_length=200, null=True, blank=True)
assigned_by = models.ForeignKey('physio.Physio', null=True, blank=True)
assigned_to = models.ManyToManyField('patient.Patient')
start_date = models.DateTimeField(null=True, blank=True)
end_date = models.DateTimeField(null=True, blank=True)
duration = models.CharField(max_length=200, null=True, blank=True)
description = models.CharField(max_length=200, null=True, blank=True)
exercises = models.ManyToManyField(
'exercise.Exercise')
这是序列化器
class ProgramSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Program
fields = (
'title', 'assigned_by', 'start_date', 'end_date', 'duration', 'description', 'exercises'
)
以下是观点:
class ProgramViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = Program.objects.all()
serializer_class = ProgramSerializer
我希望将特定生理分配的所有程序都提供给患者。 如何改变观点?
URL可以是 - / programs / physio /:physioID / patient /:patientID
我使用routers作为通用列表和详细信息视图。
答案 0 :(得分:0)
您可以实施.get_queryset()
ProgramViewSet
方法
def get_queryset(self):
physio = Physio.objects.get(id=self.kwargs['physioID'])
patient = Patient.objects.get(id=self.kwargs['patientID'])
return Purchase.objects.filter(assigned_by=physio,
assigned_to=patient)
如documentation中所述。