2017-12-14 6 views
0

문서에서 django 프로젝트를 시도하고 있습니다. 이것은 내 Models.py입니다 간단한 직원 목표 관리 시스템을 만들려고합니다. 나는 또한 DRF 및 시리얼 라이저를 사용했으며, 아래 모델의 'GET'만을 수행하기 위해 통합 된 Swagger를 사용했습니다. 모든 ForeignKey 및 ManyToMany 필드를 제거 (주석 처리)했습니다. 목표 또는 프로젝트를 수정하면이 오류가 발생합니다. 내가이 문제를 해결하는 것, 도와주세요. NOT NULL 제약 조건이 실패했습니다 : IntegrityError

class Department(models.Model): 
    department_name = models.CharField(max_length=200) 
    department_location = models.CharField(max_length=200) 
    department_region = models.CharField(max_length=200) 
    department_site = models.CharField(max_length=200) 
    department_job_titles = models.CharField(max_length=200) 

    def __str__(self): 
     return self.department_name 


class Employee(models.Model): 
    #department_name = models.ManyToManyField(Department) 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 
    email_id = models.CharField(max_length=100) 
    #employee_id = models.IntegerField() 
    supervisor_name = models.CharField(max_length=100) 
    designation = models.CharField(max_length=100) 
    doj = models.DateTimeField('date joined') 

    def __str__(self): 
     return self.first_name 

class Objectives(models.Model): 
    objective_name = models.CharField(max_length=200) 
    #employee = models.ManyToManyField(Employee) 

    def __str__(self): 
     return self.objective_name 


class Project(models.Model): 
    #employee = models.ManyToManyField(Employee) 
    project_name = models.CharField(max_length=200) 

    def __str__(self): 
     return self.project_name 

class Goals(models.Model): 
    goal_id = models.IntegerField() 
    goal_name = models.CharField(max_length=200) 
    #department = models.ManyToManyField(Department) 
    role = models.CharField(max_length=200) 
    #objective_id = models.ManyToManyField(Objectives) 
    goal_start = models.DateTimeField('date goal added') 
    goal_end = models.DateTimeField('date goal ends') 
    #employee = models.ManyToManyField(Employee) 

    def __str__(self): 
     return self.goal_name 

내 views.py

from django.shortcuts import get_object_or_404 
from rest_framework.views import APIView 
from rest_framework.response import Response 
from rest_framework import status 
from .models import Employee 
from .models import Goals 
from .models import Objectives 
from .models import Department 
from .models import Project 
from .serializers import EmployeeSerializer 
from .serializers import ProjectSerializer 
from .serializers import GoalsSerializer 
from .serializers import ObjectivesSerializer 
from .serializers import DepartmentSerializer 
from django.http import HttpResponse 
from rest_framework_swagger.views import get_swagger_view 


schema_view = get_swagger_view(title='UpYourGame API') 

#just a view if someone hits the index 
def index(request): 
    return HttpResponse("Hello and Welcome to UpyourGame") 


# this will be the URL /employee/ 
class Employee(APIView): 

    def get(self, request): 
     employee = Employee.objects.all() 
     serializer = EmployeeSerializer(employee, many=True) 
     return Response(serializer.data) 

class Project(APIView): 
    def get(self, request): 
     project = Project.objects.all() 
     serializer = ProjectSerializer(project, many=True) 
     return Response(serializer.data) 


class Goals(APIView): 

    def get(self, request): 
     goals = Goals.objects.all() 
     serializer = GoalsSerializer(goals, many=True) 
     return Response(serializer.data) 

class Objectives(APIView): 
    def get(self, request): 
     objectives = Objectives.objects.all() 
     serializer = ObjectivesSerializer(objectives, many=True) 
     return Response(serializer.data) 

#class Company(APIView): 
# def get(self, request): 
    #  company = Company.objects.all() 
    #  serializer = CompanySerializer(company, many=False) 
    # return Response(serializer.data) 

class Department(APIView): 
    def get(self, request): 
     department = Department.objects.all() 
     serializer = DepartmentSerializer(Department, many=True) 
     return Response(serializer.data) 

이 myproject라는입니다/urls.py

from django.conf.urls import include, url 
from django.contrib import admin 
from enterprise import views 


urlpatterns = [ 

    url(r'^$', views.schema_view, name='schema_view'), 
    url(r'^enterprise/', include('enterprise.urls')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^employee/', views.Employee.as_view()), 
    url(r'^goals/', views.Goals.as_view()), 
    url(r'^department/', views.Department.as_view()), 
    url(r'^department/', views.Department.as_view()), 
    url(r'^objectives/', views.Objectives.as_view()), 
    url(r'^project/', views.Project.as_view()), 

] 

이 내 serializers.py입니다

from rest_framework import serializers 
from .models import Employee 
from .models import Goals 
from .models import Objectives 
from .models import Department 
from .models import Project 


class EmployeeSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Employee 
     fields = '__all__' 


#class EmployeeDetailsSerializer(serializers.ModelSerializer): 

# class Meta: 
    #  model = EmployeeDetails 
    #  fields = '__all__' 

class ObjectivesSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Objectives 
     fields = '__all__' 


class DepartmentSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Department 
     fields = '__all__' 

#class CompanySerializer(serializers.ModelSerializer): 

# class Meta: 
#  model = Company 
#  fields = '__all__' 

class GoalsSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Goals 
     fields = '__all__' 

class ProjectSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Project 
     fields = '__all__' 

답변

0

SQLlite DB가 너무 많은 마이그레이션으로 인해 손상되었을 수 있습니다. SQLlite와 모든 마이그레이션을 삭제하고 마이그레이션을 재 시도하고 makemigrate 및 sqlmigrate를 수행하여 문제를 해결했습니다. 당신이 dev에 환경에서 유사한 문제가 발생하면 는 2. db.sqlite3 3. 실행 python manage.py migrate 4. 실행 python manage.py makemigrations 5. 실행 python manage.py sqlmigrate appname 0001

에게 삭제 다음 1. migrations 폴더에있는 모든 마이그레이션을 삭제 해보세요

이 문제가 해결됩니다.