我正在使用django rest,并尝试使用POST表单中的更改值更新django模型。我将要更新的模型和新数据放入序列化器实例中。
model_serializer = serializer.PersonSerializer(queryset, request.POST)
执行model_serializer.is_valid()时,出现错误AttributeError:'Person'对象没有属性'_default_manager'
我看过与此类似的问题。我没有找到关于没有'_default_manager'的模型对象的任何信息
在这些问题中,他们建议由于冲突而更改方法/模型的名称。这对我没有用。
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = models.Person()
fields = '__all__'
url(r'^api/personview/', views.PersonView.as_view()),
class PersonView(APIView):
renderer_classes = [TemplateHTMLRenderer]
template_name = 'rest_person_form.html'
def get(self, request):
queryset = models.Person.objects.all().last()
model_serializer = serializer.PersonSerializer(queryset)
return Response({'serializer': model_serializer, 'queryset': queryset})
def post(self, request):
queryset = models.Person.objects.all().last()
model_serializer = serializer.PersonSerializer(queryset, request.POST)
model_serializer.is_valid()
model_serializer.save()
return Response({'serializer':model_serializer})
我希望is_valid()方法能够正确无误地传递,以便我将更新后的详细信息保存到模型中。
答案 0 :(得分:2)
属性model
正在等待类,而不是实例。
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = models.Person # No () at the end
fields = '__all__'
提示:如果您不使用is_valid()
的退货,则可以使用is_valid(raise_exception=True)
自动引发错误400。