当我尝试在 View 的 post() 中保存模型对象(此处名称为“RSS”)时,它没有被保存,如何从 View 的 post() 中保存模型实例“rss” ?
在序列化器类中:
class RSSSerializer(serializers.ModelSerializer):
class Meta:
model = RSS
fields = ('feed_url', 'website_url', 'description', 'title')
def create(self, validated_data):
rss = RSS(**validated_data)
rss.created_at = datetime.now()
rss.last_scan_time = '2001-01-01 00:00:00'
rss.id = None
return rss
在 View 类中:
class RSSList(APIView):
def post(self, request):
serializer = RSSSerializer(data=request.data)
if serializer.is_valid():
print("saving rss post")
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
最佳答案
您当前的 create
方法会实例化一个新的 RSS
对象,但不会保存它。试试这个:
def create(self, validated_data):
rss = RSS.objects.create(**validated_data)
rss.created_at = datetime.now()
...
return rss.save()
更多信息:Django rest framework: override create() in ModelSerializer passing an extra parameter
http://www.django-rest-framework.org/api-guide/serializers/#saving-instances
If your object instances correspond to Django models you'll also want to ensure that these methods save the object to the database.
关于python - 在 Django 中保存序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250146/