python - django rest 框架:是否可以在不使用主键的情况下创建放置/补丁请求?
问题描述
我想从使用 put http 方法获得的数据中更新 2 个字段 is_exempted 和注释。而且我可以从http方法获得多个推荐数据。并且模型没有我可以考虑的字段 pk 对于每个 account_id 可以有多个条目。
模型.py
class Recommendation(models.Model):
account = models.ForeignKey(Accounts, on_delete=models.CASCADE)
account_name = models.CharField(max_length=255, blank=True, null=True)
instance_id = models.CharField(max_length=255, blank=True, null=True)
month_year = models.CharField(max_length=50, blank=True, null=True)
instance_type = models.CharField(max_length=255, blank=True, null=True)
is_exempted = models.CharField(max_length=50, default='no', null=False)
comments = models.CharField(max_length=255, blank=True, null=True)
序列化程序.py
class RecommendationSerializers(serializers.ModelSerializer):
class Meta:
model = Recommendation
fields = ( 'account_id', 'account_name', 'instance_id', 'instance_type', 'is_exempted', 'comments', 'month_year')
视图.py
@api_view(['PUT'])
def update_recommendation_data(request):
output = []
if request.method == 'PUT':
if request.data:
for d in request.data:
print(d)
serializer = RecommendationSerializers(data=d, partial=False)
if serializer.is_valid():
serializer.save()
output.append(serializer.data)
return Response(data=output, status=status.HTTP_200_OK)
return Response(data="BAD REQUEST", status=status.HTTP_400_BAD_REQUEST)
网址.py
router = routers.DefaultRouter()
urlpatterns = [url("^", include(router.urls)),
url(r'^updaterecommendation$', views.update_recommendation_data)]
解决方案
推荐阅读
- c++ - POSIX/MinGW 兼容性:mkdir('/tmp/randompath') 失败
- azure-devops - 我在哪里可以找到新的 azure devops 扩展的所有可用贡献目标?
- python - 安装 Python 包时出现 Ubuntu 错误
- javascript - 是否有在浏览器中创建绘图功能的首选方法?
- elasticsearch - 将mysql数据传输到kibana时出现logstash配置错误,sql db密码为空,所以我传递jdbc_password =“”
- java - 使用 Spring Boot 项目在 html 表中显示本地文件中的 json 数组
- xamarin.forms - 使用 xamarin 形式的融合图表
- javascript - 使用Javascript检查到控制器时如何传递一组表记录
- rust - 无法分配给“x”,因为它是借来的
- python - 在 pygame 中实现 Rect 对象和球之间的碰撞检测功能