Добавьте поле count в сериализатор рамки django rest
Я сериализую встроенную модель группы django и хотел бы добавить поле в сериализатор, который подсчитывает количество пользователей в группе. В настоящее время я использую следующий сериализатор:
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = ('id', 'name', 'user_set')
Это возвращает идентификатор группы и имя и массив пользователей (идентификаторы пользователей) в группе:
{
"id": 3,
"name": "Test1",
"user_set": [
9
]
}
Вместо этого я хотел бы выводить результат:
{
"id": 3,
"name": "Test1",
"user_count": 1
}
Любая помощь будет оценена по достоинству. Спасибо.
Ответы
Ответ 1
Это должно работать
class GroupSerializer(serializers.ModelSerializer):
user_count = serializers.SerializerMethodField()
class Meta:
model = Group
fields = ('id', 'name','user_count')
def get_user_count(self, obj):
return obj.user_set.count()
Это добавляет поле user_count
к вашему сериализатору, значение которого задается get_user_count
, которое вернет длину user_set
.
Дополнительную информацию о SerializerMethodField можно найти здесь: http://www.django-rest-framework.org/api-guide/fields/#serializermethodfield
Ответ 2
Немного поздно, но короткий ответ. Попробуйте это
user_count = serializers.IntegerField(
source='user_set.count',
read_only=True
)