Django Restframe使用序列化程序或对象管理器来处理业务逻辑

时间:2018-01-30 09:34:58

标签: django django-rest-framework

  • 我需要按照以下

    创建业务逻辑
    1. 检查学生的姓名是否已存在
    2. 检查学生的姓名与通过的姓名相同。
    3. 如果测试成立。返回验证消息“已存在相同注册号的学生”
  • 模型

    class Student(models.Model):
        name = models.CharField(max_length=255)
        sex = models.CharField(choices=GENDER_CHOICES, max_length=255)
        category = models.CharField(max_length=255, default='')
    
        objects = StudentManager()
    
        def __str__(self):
            return self.name
    
    class RegistrationNumber(models.Model):
        student = models.ForeignKey(Student, on_delete=models.CASCADE,
                                    related_name='registration_number', null=True)
        registration_number = models.CharField(max_length=255)
        year_of_registration = models.IntegerField(null=True)
    
        def __str__(self):
            return self.registration_number
    
  • 串行

    class AcademicMigrateSerializer(serializers.Serializer):
        name = serializers.CharField()
        registration_number = serializers.CharField()
    
        def create(self, validated_data):
            name = validated_data.get('name')
            registration_number = validated_data.get('registration_number')
    
            try:
                registration = RegistrationNumber.objects.get(
                    registration_number=registration_number)
    
            except ObjectDoesNotExist:
                registration = RegistrationNumber.objects.create(
                    registration_number=registration_number,
                    student=student
                )
                print("registration number doesnot exist")
    
    
            return student
    
  • 视图

     class AcademicMigrateCreateAPIView(CreateAPIView):
          serializer_class = AcademicMigrateSerializer
    

3 个答案:

答案 0 :(得分:2)

首先尝试使用新数据库

./odoo-bin -d test1 --db-filter=test1 --dev=all

Visit this link了解有关Odoo安装的更多信息。

答案 1 :(得分:0)

我认为最好提供终端错误。 但是,您可能会遇到这样的错误的原因可能是您的服务器正在错误端口上与postgres服务器通信。默认情况下,odoo通过5432连接到postgres。

答案 2 :(得分:0)

如果错误是在安装时出现的,那么问题越有可能是问题,最好是卸载Odoo和Postgres,删除保留在C:中的结果文件。

非常重要:输入注册表编辑器Win + R:regedit [HKLM \ Software \ PostgreSQL]并删除所有引用Postgres的条目

PS:在x64系统上使用regedit,这些密钥位于HKLM \ Software \ Wow6432Node下,这是映射到HKLM \ Software的64位计算机上运行的32位进程的“反射密钥”。可以手动将其忽略,除非手动查看/编辑注册表。安装程序将以32位运行,因此可以在正常位置找到它们。