通过基于自定义字符串的ID创建对象

时间:2019-05-10 21:18:12

标签: python django django-rest-framework

我是Django Rest Framework的新手 我有两个Django模型

class Course(models.Model):
    courseId = models.CharField(max_length = 10, primary_key = True)

class Student(models.Model):
    name = models.CharField(max_length = 200)
    studentId = models.CharField(max_length = 10, primary_key = True)
    course = models.ForeignKey(Course , blank = True)

我知道django有一个默认的主键字段 但是我想将主键CourseId用于Course表,将StudentId字段用于Student表。 现在,我想通过django rest框架通过传递json数据来创建Student表的课程字段

data = {'name': 'newName', 'courseId': '8uheydg4er'}
创建新学生时,将在序列化程序类中生成

唯一的学生ID。 现在,我想首先检查一下courseId是否存在。如果json文件具有courseId并且在课程表中存在,那么我们将创建一个新学生。如果Course表中没有课程ID,则将存在无效课程ID的验证错误

如何验证这种情况下的课程编号

views.py

@api_view(['GET', 'POST'])
def Student(request)
 if request.method == 'POST':
        serializer = StudentSerializers(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我想尝试编写序列化器

serializers.py

class StudentSerializers(serializers.ModelSerializer):
       class Meta:
         model = Student
         fields = ('name', 'studnetId', 'courseId')

       def create(serializers.ModelSerializer):
          instance = Order.objects.create(**validated_data)
          return instance

如何通过Django序列化程序创建。 请帮助。

谢谢!

0 个答案:

没有答案