Я пытаюсь создать такую структуру данных в 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 }
}
]
Однако даже когда я отправляю два объекта с 2 "uid", как указано выше, с React и отправляю их в Django. Я проверил с помощью инструмента React для Mozilla, и он показывает оба объекта впередний конец.Однако, после отправки их в бэкэнд, в django rest framework появляется только последний объект, в приведенном выше случае это только объект ("uid": "2").Так что я не знаю, где это идет не так?
Прямо сейчас в Django Restful выглядит так:
{
"id": 1,
"name": "Alamos",
"modeltask": [
{
"uid": "2",
"priority": 2,
"task": {
"time": 0.0,
"student": 0 }
}
]
My models.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)
Вот мои сериализаторы.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'