【发布时间】:2020-05-15 08:17:37
【问题描述】:
我想从使用 put http 方法获得的数据中更新 2 个字段 is_exempted 和 cmets。而且我可以从http方法获得多个推荐数据。并且模型没有我可以考虑的字段 pk 对于每个 account_id 可以有多个条目。
models.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')
views.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)
urls.py
router = routers.DefaultRouter()
urlpatterns = [url("^", include(router.urls)),
url(r'^updaterecommendation$', views.update_recommendation_data)]
【问题讨论】:
-
这个视图的 url 路径是什么?
-
更新了 urls.py
-
我已经发布了一个答案,它有帮助吗?我错过了什么?请告诉我;D
-
使用主键我可能知道.. 但我想知道没有主键是否可以执行补丁或放置。因为我将获得不是主键的 account_id,所以我可以获得该 account_id 的所有记录......并且我必须为我将从 request.data 获得的所有数据更新 is_exempted 和 cmets。注意 - account_id、instance_id 和 month_year 可以唯一标识一行。
-
那么,您的想法是在一个请求中发送多个 Recommendation 对象?
标签: python django http django-rest-framework rest