我执行请求http://167.71.57.114/api2/workout-exercises/3
我想接收关于WorkoutExercise
对象编号3(详细视图)的数据
Got AttributeError when attempting to get a value for field
description
on serializerExerciseSerializer
. The serializer field might be named incorrectly and not match any attribute or key on theRelatedManager
instance. Original exception text was: 'RelatedManager' object has no attribute 'description'.
序列化程序.py
class WorkoutExerciseSerializer(serializers.ModelSerializer):
exercises = ExerciseSerializer()
class Meta:
model = WorkoutExercise
fields = ('week', 'exercises')
视图.py
class WorkoutExerciseViewSet(viewsets.ModelViewSet):
queryset = WorkoutExercise.objects.all()
serializer_class = WorkoutExerciseSerializer
http_method_names = ['get', 'post']
型号.py
class WorkoutExercise(models.Model):
workout_program = models.ForeignKey(WorkoutProgram, on_delete=models.CASCADE, related_name='workout_exercises')
week = models.PositiveIntegerField(default=1)
day = models.PositiveIntegerField(default=1)
order = models.PositiveIntegerField(default=1)
def save(self, *args, **kwargs):
if not self.pk:
last_order = WorkoutExercise.objects.all().aggregate(largest=models.Max('order'))['largest']
if last_order is not None:
self.order = last_order + 1
return super(WorkoutExercise, self).save(*args, **kwargs)
def get_workout_programs(self):
return self.workout_program.name
def get_exercises(self):
pass
def __str__(self):
return self.workout_program.name
class Meta:
ordering = ('week', 'day')
基于
exercises
是复数的事实,以及RelatedManager
错误,这意味着存在多个^{Exercises
,因此您需要使用many=True
参数序列化它们:相关问题 更多 >
编程相关推荐