После отправки сообщения или запроса обновления я получаю 1062, "Duplicate entry '' for key 'crmapp_employees.email'". [Внешний ключ]

Концепция заключается в том, что я пытаюсь опубликовать или обновить Дело. Поля "title", "customer", "assigned_to" и "created_by" являются обязательными. Также "assigned_to" и "created_by" являются внешними ключами модели Employees с полем email как уникальным. Я получаю ошибку валидации для "title", если оно null, но для остальных я получаю ошибку "Duplicate entry". Остальные запросы для Employees и Customers работают отлично.Спасибо всем заранее. Ниже вы найдете необходимый код:

-----------MODELS------------------------------

class Employees(models.Model):
#auto increment id
email = models.EmailField(unique=True)

class Customers(models.Model):
#auto increment id
email = models.EmailField(unique=True, null=True, blank=True)


class Cases(models.Model):
#auto increment id
title = models.CharField(max_length=100)
assigned_to = models.ForeignKey(
    Employees, on_delete=models.PROTECT, related_name='assignee')
created_by = models.ForeignKey(
    Employees, on_delete=models.PROTECT, related_name='creator')
customer = models.ForeignKey(
     Customers, on_delete=models.PROTECT, related_name='cases',null=True, blank=True)

-----------Serializers------------------------------

class SimpleEmployeeSerializer(serializers.ModelSerializer):
class Meta:
    model = Employees
    fields = ['id', 'full_name', ]
    read_only_fields=('full_name',)

full_name = serializers.SerializerMethodField(method_name='get_full_name')

def get_full_name(self, obj):
    return '{} {}'.format(obj.first_name, obj.last_name)

class SimpleCustomerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Customers
        fields = ['id', 'full_name',]
        read_only_fields=('full_name',)

    full_name =  serializers.SerializerMethodField( method_name='get_full_name')

    def get_full_name(self, obj):
        return '{} {}'.format(obj.first_name, obj.last_name) 

class ViewUpdateCaseSerializer(WritableNestedModelSerializer, serializers.ModelSerializer):
    class Meta:
        model = Cases
        fields = ['id', 'category', 'title', 'description', 'customer', 'assigned_to', 
        'created_by', 'priority', 'status', 'creation_date', 'start_date', 'resolved_date', 
        'due_date', 'comments', 'cost', 'earning_fixed','earning_percent', 'clear_earning', 
        'price_without_vat','price_with_vat']
     
    customer = SimpleCustomerSerializer()
    assigned_to = SimpleEmployeeSerializer()
    created_by = SimpleEmployeeSerializer()

-----------Views------------------------------

@api_view(['GET', 'POST'])
def cases_list(request):
    if request.method == 'GET':
        queryset = Cases.objects.select_related('customer', 'assigned_to', 'created_by').all()
        serializer = ViewUpdateCaseSerializer(queryset, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ViewUpdateCaseSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)

@api_view(['GET', 'PUT', 'PATCH', 'DELETE'])
def case_detail(request, id):
    case = get_object_or_404(Cases, pk=id)
    if request.method == 'GET':
        serializer = ViewUpdateCaseSerializer(case)
        return Response(serializer.data)
    elif request.method == 'PUT':
        serializer = ViewUpdateCaseSerializer(case, data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data)
    elif request.method == 'PATCH':
        serializer = ViewUpdateCaseSerializer(case, data=request.data, partial=True)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        print("patch serializer: ", serializer.data)
        return Response(serializer.data)
    elif request.method == 'DELETE':
        case.delete()
        return Response( status=status.HTTP_204_NO_CONTENT)

В итоге, кроме "Дублирующей записи", я получил 1 пустую строку в таблице Employee на Mysql db и 1 пустую строку в таблице Customer. Как мне решить эту проблему?

Вернуться на верх