javascript - 在前端使用 React 将两个对象发送到 Django Rest 框架,但只有最后一个对象出现在 Django Rest 框架中
问题描述
我正在尝试在 Django Rest Framework 中创建这样的数据结构:
[
{
"id": 1,
"name": "Alamos",
"modeltask": [
{
"uid": "1",
"priority": 1,
"task": {
"time": 0.0,
"student": 0 }
}
,
{
"uid": "2",
"priority": 2,
"task": {
"time": 0.0,
"student": 0 }
}
]
然而,即使我使用 React 发送两个具有 2“uid”的对象并将其发送到 Django。我使用 Mozilla 的 React 工具进行了检查,它在前端显示了这两个对象。然而,在将它们发送到后端之后,django rest 框架中只出现了最新的对象,在上面的例子中,只有 ("uid": "2") 的对象。所以不知道哪里出错了?
现在在 Django Restful 中是这样的:
{
"id": 1,
"name": "Alamos",
"modeltask": [
{
"uid": "2",
"priority": 2,
"task": {
"time": 0.0,
"student": 0 }
}
]
我的模型.py
class Main(models.Model):
id= models.AutoField(primary_key=true)
name = models.CharField(max_length=120, blank=True, null=True)
def __str__(self):
return self.name
@property
def modeltask(self):
return self.modeltask_set.all()
class ModelTask(models.Model):
uid =models.CharField(max_length=120, blank=True, null=True)
priority= models.IntegerField(blank = True, null=True)
main = models.ForeignKey(Main, on_delete=models.CASCADE)
def __str__(self):
return self.uid
class Task(models.Model):
time = models.FloatField(blank=True, null=True)
student =models.IntegerField(blank=True, null = True)
这是我的serializers.py:
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields =['time', 'student']
class ModelTaskSerializer(serializers.ModelSerializer):
task = TaskSerializer(required =True)
class Meta:
model = ModelTask
field = ['uid', 'priority', 'student']
def create(self,validated_data):
task_data =validated_data.pop('task')
modeltask = ModelTask.objects.create(**validated_data)
task.objects.create(**task_data, section =task)
return modeltask
class MainSerializer(serializers.ModelSerializer):
task = TaskSerializer(many=true)
class Meta:
model = Main
field = ['id','name','modeltask']
def create(self,validated_data):
modeltask = modeltask_data ('modeltask')
Name = Main.object.create(**validated_data)
Name.save()
for data in modeltask:
task =data.pop('task')
modeltask_section=ModelTask.objects.create(**data, Name = Name)
def update(self,instance, validated_data):
modeltask = validated_data.pop('modeltask')
instance.name =validated_data.get('name', instance.name)
instance.save()
modeltask_id =[]
for data in modeltask:
task = data.pop('task')
for 'id' in data.key():
if ModelTask.objects.filter(id =data["id"]).exists():
r =Shell.objects.get(id=data["id"])
r.uid = data.get("uid",r.uid)
r.priority =data.get("priority",r.priority)
r.save()
Task.objects.create(**task,section=r)
modeltask_id.append(r.id)
else:
instance.modeltask.delete()
r =ModelTask.objects.create(**data,Name =instance)
Task.objects.create(**task,section =r)
modeltask_id.append(r.id)
for data in instance_modeltask:
if data.id not in modeltask_id:
data.delete()
instance.save()
return instance
和views.py
class MainView(viewsets.ModelViewSet):
serializer_class = MainSerializer
queryset = Main.objects.all()
lookup_field= 'id'
class ModelTaskView(viewsets.ModelViewSet):
serializer_class=ModelTaskSerializer
queryset = ModelTask.objects.all()
lookup_field = 'id'
class TaskView(viewsets.ModelViewSet):
serializer_Class =TaskSerializer
queryset = Task.objects.all()
lookup_field = 'id'
解决方案
推荐阅读
- bash - “bash -c 命令参数”末尾的参数的目的是什么?
- php - base_url() 函数不起作用(代码点火器)
- firebase - 尝试使用 NextJS 上的 getStaticProps 从 Firebase 获取数据时出现错误 XMLHttpRequest is not defined
- websocket - 如何在概念上构建我的 Websocket 客户端-服务器消息的 ID
- socket.io - 尽管响应格式正确,引擎 IO 客户端解析器错误?
- javascript - 如何检查 localStorage 中的令牌是否有效?
- javascript - 如何更改 OverlayView 和 ImageMapType 的顺序?
- amazon-web-services - 从 lambda 返回 AWS CloudFront 地理位置标头
- php - 使用未找到接口 JsonSerializable 获取 HTTP 错误 500
- c# - Dapper 在从数据库中进行选择时正在访问我的类的所有属性,即使它不应该这样做