如何解决如何在 Django 模型文本字段中创建、获取和更新 JSON 数据?
我看到很多关于这个问题的答案,但我很困惑如何实现这个。
我的要求是:
(创建)首先用键和值创建数据:
{"pradip" : 80}
并存储在 user_rate_details
模型字段中。
(更新)第二次在此字段中追加新数据:
{"pradip" : 80,"exz" : 70}
并保存。
我认为如何实现这一目标..
models.py:
class UserPhoto(models.Model):
user = models.ForeignKey(to = User,on_delete = models.CASCADE,related_name='userPhoto')
......
rated_by = models.ManyToManyField(Profile,blank=True,related_name='rate_by')
user_rate_details = models.TextField() ⬅⬅⬅⬅⬅ Here store JSON data
created_date = models.DateTimeField(auto_Now_add=True)
views.py:
class PhotoRate(APIView):
permission_classes = [IsAuthenticated]
def get_userPhoto(self,pk):
try:
return UserPhoto.objects.get(id = pk)
except UserPhoto.DoesNotExist:
raise Http404
def post(self,request,formate = None):
pk = request.data.get('photo_id')
rate = request.data.get('rate')
photo = self.get_userPhoto(pk)
???????? How to create or update Json data here???
return Response(??JSON DATA??)
你知道的任何其他最好的方法请告诉我..
谢谢..
解决方法
我真的不明白您的问题,但如果您打算将 json 数据存储在模型字段中,那么您可以尝试...
在您的模型中:
import json
@property
def user_rate_details(self):
return json.loads(self.user_rate_details)
在您看来:
pk = request.data.get('photo_id')
rate = request.data.get('rate')
photo = self.get_userPhoto(pk)
details = photo.user_rate_detail
details['rate'] = int(rate)
photo.user_rate_details = json.dumps(details)
photo.save(update_fields=['user_rate_details'])
return Response()
,
在模型中创建文本字段并转储或加载 JSON 数据..
models.py:
import json
class UserPhoto(models.Model):
user = models.ForeignKey(to = User,on_delete = models.CASCADE,related_name='userPhoto')
......
rated_by = models.ManyToManyField(Profile,blank=True,related_name='rate_by')
user_rate_details = models.TextField(default="{}")
created_date = models.DateTimeField(auto_now_add=True)
@property
def rate_details(self):
return json.loads(self.user_rate_details)
views.py:
class PhotoRate(APIView):
permission_classes = [IsAuthenticated]
def get_userPhoto(self,pk):
try:
return UserPhoto.objects.get(id = pk)
except UserPhoto.DoesNotExist:
raise Http404
def post(self,request,formate = None):
pk = request.data.get('photo_id')
rate = request.data.get('rate')
photo = self.get_userPhoto(pk)
user_dict = photo.rate_details
user_dict[self.request.user.username] = int(rate)
photo.user_rate_details = json.dumps(user_dict)
photo.save(update_fields=['user_rate_details'])
return Response({"Success" : "Rate submited!!"},status=status.HTTP_200_OK)
def patch(self,formate=None):
pk = request.data.get('photo_id')
photo = self.get_userPhoto(pk)
rate_detail = photo.rate_details
return Response({"Rated Users" : rate_detail},status=status.HTTP_200_OK)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。