如何在我的数据库中添加数据以使用 django 和 DRF
how to add data in my db for using django and DRF
我正在制作一个 API,它使用 DRF 接收 Arduino 的数据并将其发送到 Android。首先,我们成功创建了一个 API 来显示存储在 DB 中的值。但是,生成将 Arduino 的数据发送到 DB 的 API 时存在问题。通常输入数据,但不存储此数据。你能告诉我我的代码的问题吗?这是我的代码
views.py
from .models import arduino
from .serializers import arduinoSerializers
from rest_framework.viewsets import ViewSet, ModelViewSet
from rest_framework.response import Response
class arduinoToAndroidViewSet (ViewSet) :
def dataSend (self, request) :
user = self.request.user
queryset = arduino.objects.filter(name=user)
serializer = arduinoSerializers(queryset, many=True)
return Response(serializer.data)
class arduinoToDatabaseViewSet (ModelViewSet) :
serializer_class = arduinoSerializers
def get_queryset(self) :
user = self.request.user
return arduino.objects.filter(name=user)
def dataReceive(self, request) :
queryset = get_queryset()
serializer = arduinoSerializers(queryset, many=True)
serializer.save()
return Response(serializer.data)
serializers.py
from rest_framework import serializers
from .models import arduino
class arduinoSerializers (serializers.ModelSerializer) :
name = serializers.CharField(source='name.username', read_only=True)
class Meta :
model = arduino
fields = ('name', 'temp', 'humi')
models.py
from django.db import models
from django.contrib.auth.models import User
class arduino (models.Model) :
name = models.ForeignKey(User, related_name='Username', on_delete=models.CASCADE, null=True)
temp = models.FloatField()
humi = models.FloatField()
def __str__ (self) :
return self.name.username
如果您指的是 dataReceive(self, request)
方法尽管具有 有效 queryset
但未保存数据的问题(无法理解为什么正在查询并再次保存保存对象),是因为您必须 总是 调用 is_valid()
才能尝试保存。所以应该是
def dataReceive(self, request) :
queryset = get_queryset()
serializer = arduinoSerializers(queryset, many=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
我正在制作一个 API,它使用 DRF 接收 Arduino 的数据并将其发送到 Android。首先,我们成功创建了一个 API 来显示存储在 DB 中的值。但是,生成将 Arduino 的数据发送到 DB 的 API 时存在问题。通常输入数据,但不存储此数据。你能告诉我我的代码的问题吗?这是我的代码
views.py
from .models import arduino
from .serializers import arduinoSerializers
from rest_framework.viewsets import ViewSet, ModelViewSet
from rest_framework.response import Response
class arduinoToAndroidViewSet (ViewSet) :
def dataSend (self, request) :
user = self.request.user
queryset = arduino.objects.filter(name=user)
serializer = arduinoSerializers(queryset, many=True)
return Response(serializer.data)
class arduinoToDatabaseViewSet (ModelViewSet) :
serializer_class = arduinoSerializers
def get_queryset(self) :
user = self.request.user
return arduino.objects.filter(name=user)
def dataReceive(self, request) :
queryset = get_queryset()
serializer = arduinoSerializers(queryset, many=True)
serializer.save()
return Response(serializer.data)
serializers.py
from rest_framework import serializers
from .models import arduino
class arduinoSerializers (serializers.ModelSerializer) :
name = serializers.CharField(source='name.username', read_only=True)
class Meta :
model = arduino
fields = ('name', 'temp', 'humi')
models.py
from django.db import models
from django.contrib.auth.models import User
class arduino (models.Model) :
name = models.ForeignKey(User, related_name='Username', on_delete=models.CASCADE, null=True)
temp = models.FloatField()
humi = models.FloatField()
def __str__ (self) :
return self.name.username
如果您指的是 dataReceive(self, request)
方法尽管具有 有效 queryset
但未保存数据的问题(无法理解为什么正在查询并再次保存保存对象),是因为您必须 总是 调用 is_valid()
才能尝试保存。所以应该是
def dataReceive(self, request) :
queryset = get_queryset()
serializer = arduinoSerializers(queryset, many=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)