Здравствуйте, я использую Django и MongoDB для создания проекта REST API. Я использую Djongo для соединения Django с MongoDB. Я создал свои модели следующим образом:
Models
from djongo import models
class OPCNetworkNode(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
address = models.CharField(max_length=100, default="localhost", blank=False, null=False)
port = models.CharField(max_length=10, default="58725")
class OPCTagBrowserSesson(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
opc_node = models.ForeignKey(OPCNetworkNode, on_delete=models.CASCADE,related_name='node_opc_sesson', unique=True)
clientId = models.CharField(max_length=100, blank=False, null=False)
token = models.CharField(max_length=100, blank=False, null=False)
timestamp = models.DateTimeField(default=timezone.now())
и создал представление на основе функций следующим образом:
Представление
@api_view(['POST'])
def getOPCRoot(request):
opc_uri = request.data.get('opc_uri')
sessonInstance = OPCTagBrowserSesson.objects.filter(opc_node__address__exact=opc_uri)
sessonInstance.update(clientId = "88888888888888")
return Response(data={"check cmd"})
Но когда я запрашиваю POST-запрос к URL-адресу с параметром 'opc_uri', чтобы выполнить обновление данных модели, я получаю следующую ошибку.
Ошибка:
djongo.sql2mongo.SQLDecodeError: FAILED SQL: UPDATE "asset_herarchi_opctagbrowsersesson" SET "clientId" = %(0)s WHERE "asset_herarchi_opctagbrowsersesson"."id" IN (SELECT U0."id" FROM "asset_herarchi_opctagbrowsersesson" U0 INNER JOIN "asset_herarchi_opcnetworknode" U1 ON (U0."opc_node_id" = U1."id") WHERE U1."address" = %(1)s)
Params: ('88888888888888', 'localhost')
Pymongo error: {'index': 0, 'code': 40081, 'errmsg': '$in requires an array as a second argument, found: missing'}
Version: 1.2.35