trying "POST" ..
i don know why SaveSerializer is no valid
view.py
@csrf_exempt
@api_view(['POST',])
def Save(request):
serializer = SaveSerializer(data = request.data)
data = {}
data["status"] = "fail"
serializer.is_valid()
print(serializer.errors)
if serializer.is_valid():
serializer.save()
data["status"] = "success"
return Response(status=status.HTTP_200_OK)
return Response(status=status.HTTP_404_NOT_FOUND)
model.py
from django.db import models
from colorful.fields import RGBColorField
from jsonfield import JSONField
# Create your models here.
class Work(models.Model):
#work_id = models.AutoField(primary_key=True)
work_date=models.DateField()
work_name = models.CharField(max_length=128, default='', unique=True)
#node_id = models.AutoField(primary_key=True)
work_id = models.AutoField(primary_key=True)
class Label(models.Model):
# label_id = models.AutoField(primary_key=True, null=False)
label_title = models.CharField(max_length=128, default='')
circle_size = models.DecimalField(decimal_places=0, max_digits=5)
circle_color = RGBColorField()
Label_work = models.ForeignKey(Work, on_delete=models.CASCADE, db_column =
"Work.work_id")
class Node(models.Model):
#node_id = models.AutoField(primary_key=True)
node_title = models.CharField(max_length=128, default='')
node_pointX = models.FloatField(null=False, default=100)
node_pointY = models.FloatField(null=False, default=100)
node_property = JSONField(default={})
#node_property = JSONField(default={}, dump_kwargs={'ensure_ascii': False})
node_label = models.ForeignKey(Label, on_delete=models.CASCADE, db_column =
"Label.id"
)
node_work = models.ForeignKey(Work, on_delete=models.CASCADE, db_column =
"Work.work_id"
)
def __str__(self):
return self.node_title
class myRelation(models.Model):
# relation_id = models.AutoField(primary_key=True)
myfrom_node = models.ForeignKey(Node, related_name='from_n',
on_delete=models.CASCADE
)
rel_type = models.CharField(max_length=128, default='')
rel_property = JSONField(default={})
rel_work = models.ForeignKey(Work, related_name="rpr",
on_delete=models.CASCADE, db_column="Work.work_id")
myto_node = models.ForeignKey(Node, related_name='to_n',
on_delete=models.CASCADE
)
serializers.py
from rest_framework import serializers
from .models import Work, Label, Node, myRelation
import json, datetime
class WorkSerializer(serializers.ModelSerializer):
class Meta:
model = Work
fields = ('work_date','work_name','work_id')
class LabelSerializer(serializers.ModelSerializer):
Label_work = serializers.PrimaryKeyRelatedField()
class Meta:
model = Label
fields = ('label_title','circle_size','circle_color','Label_work')
class NodeSerializer(serializers.ModelSerializer):
node_label = serializers.PrimaryKeyRelatedField()
node_work = serializers.PrimaryKeyRelatedField()
class Meta:
model = Node
fields =
('node_title','node_pointX','node_pointY','node_property','node_label')
class myRelationSerializer(serializers.ModelSerializer):
myfrom_node = serializers.PrimaryKeyRelatedField()
rel_work = serializers.PrimaryKeyRelatedField()
myto_node = serializers.PrimaryKeyRelatedField()
class Meta:
model = myRelation
fields =
('myfrom_node','rel_type','rel_property','rel_work','myto_node')
class SaveSerializer(serializers.ModelSerializer):
Node = NodeSerializer(many = True)
Relation = myRelationSerializer(many = True)
Label = LabelSerializer(many = True)
class Meta:
model = Node
fields = ('Node','Relation','Label',)
def create(self,validated_data):
print("test2")
nodes = validated_data.pop('node')
relations = validated_data.pop('relation')
labels = validated_data.pop('label')
file_id = validated_data['file_id']
work = Work.objects.filter(work_id = file_id)
Node.objects.filter(node_work=file_id).delete()
Label.objects.filter(Label_work=file_id).delete()
myRelation.objects.filter(rel_work=file_id).delete()
w = Work.objects.get(work_id=file_id)
label_dictionary = dict()
for _label in labels:
#label_dictionary[_label["id"]] = _label.objects.create(Label_work
= w, **_label)
label_dictionary[_label["id"]] =
_label.objects.create(label_title=_label["title"],
circle_size=_label["circle_size"],
circle_color=_label["circle_color"], Label_work=w)
dictionary = dict()
for _node in nodes:
# dictionary[_node["id"]] = _node.objects.create(node_label =
label_dictionary[_node["label"]], Label_work = w, **_node)
dictionary[_node["id"]] =
_node.objects.create(node_title=_node["title"], node_pointX=_node["pointX"],
node_pointY=_node["pointY"],node_property=_node["property"],
node_label=label_dictionary[_node["label"]], node_work=w)
for _relation in relations:
From_node = dictionary[_relation["myfrom_node"]]
To_node = dictionary[_relation["myto_node"]]
_relation.objects.create(myfrom_node=From_node,
rel_type=_relation["rel_type"],
rel_property=json.loads(_relation["rel_property"]),
rel_work=w, myto_node=To_node)
return work
class SaveAsSerializer(serializers.ModelSerializer):
pass
--
You received this message because you are subscribed to the Google Groups
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.