0
我有兩個型號:如何在Django REST API框架中顯示過濾的反向關係?
class Task(models.Model):
person = models.ForeignKey(Person, related_name='tasks')
title = models.CharField(max_length=200)
is_deleted = models.BooleanField(default=False)
class Person(models.Model):
name = models.CharField(max_length=100)
is_deleted = models.BooleanField(default=False)
和兩個串行:
class PersonSerializer(serializers.ModelSerializer):
tasks = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Person
fields = ('id', 'name', 'tasks')
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ('id', 'title')
我想建立它返回的人的細節與非刪除任務列表以及屬於這個人的API。
如:
{
"id": 1,
"name": "Alan",
"tasks": [
100,
101,
102
]
}
所以在view.py
,我有:
@api_view(['GET'])
def api_person_detail(request, person_id):
"""
Project details
"""
if request.method == 'GET':
try:
person = Person.objects.get(is_deleted=False, pk=person_id)
except Person.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = PersonSerializer(person)
return Response(serializer.data)
所有的工作好,除了任務101被刪除(is_delete = TRUE)。我不希望它在迴應中。我怎麼能過濾在這種情況下所有被刪除的任務?
你救了我的一天,託多爾!我不知道這個Prefetch對象。看起來它是在Django 1.7中引入的。它像一個魅力!謝謝。 – killua8p 2015-02-25 01:32:59