Я попытался создать сериализатор документов для базы данных Mongodb, используя django rest api. Вот код:
Serializers.py
from rest_framework import serializers
from rest_framework_mongoengine import serializers as mongoserializers
from .models import client_reposit
class client_repositSerializer(mongoserializers.DocumentSerializer):
class Meta:
fields = '__all__'
model = client_reposit
views.py
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import client_reposit
from .serializers import client_repositSerializer
from django.shortcuts import redirect,get_object_or_404
@api_view(['GET', 'POST'])
def client_reposit_list(request):
if request.method == 'GET':
snippets = client_reposit.objects.all()
serializer = client_repositSerializer(snippets, many=True)
return Response(serializer.data)
elif request.method == 'POST':
recipe = get_object_or_404(client_reposit,id=b'request.data['ue_mac']')
print(recipe)
serializer = client_repositSerializer(data=request.data,instance=recipe)
if serializer.is_valid():
recipe = serializer.save()
recipe.user = request.user
recipe.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET', 'POST'])
def user_ogin(request):
if request.method == 'POST':
serializer = client_repositSerializer(data=request.data,many=True)
if serializer.is_valid():
serializer.save(ue_mac=request.data['ue_mac'])
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
models.py:
from django_mongoengine import Document, fields
class client_reposit(Document):
manufacturer_name=fields.StringField()
model_name=fields.StringField()
model_no=fields.StringField()
ue_mac=fields.StringField()
os_type=fields.StringField()
os_version=fields.StringField()
ver_80211_support=fields.StringField()
freq_support=fields.StringField()
device_type=fields.StringField()
serial_no=fields.StringField()
release_year=fields.StringField()
priority=fields.StringField()
chrome_ver=fields.StringField()
safari_ver=fields.StringField()
edge_ver=fields.StringField()
samsungBrowser_ver=fields.StringField()
is_sticky=fields.BooleanField()
TLS_ver=fields.StringField()
is_11wC=fields.BooleanField()
is_PMK=fields.BooleanField()
is_OKC=fields.BooleanField()
is_11r=fields.BooleanField()
is_11k=fields.BooleanField()
is_PMK_cache=fields.BooleanField()
is_UNII_2A=fields.BooleanField()
is_UNII_2C=fields.BooleanField()
is_UNII_3=fields.BooleanField()
is_WPA3=fields.BooleanField()
def __str__(self):
"""A string representation of the model."""
return self.model_name
Здесь я необходимо обновить базу данных на основе id = "ue_ma c". В mongodb не установлен pk, кроме идентификатора объекта. Может кто-нибудь помочь мне рассказать, как обновить список JSON файлов, используя метод создания и обновления в Django.