Django model.objects.get() isn't looking by param that I specify

Viewed 39

I'm trying to get object from db. That's my model:

class Employee(models.Model):

    class EmployeeRole(models.TextChoices):
        DEFAULT = 'Default'
        PM = 'PM'
        ADMINISTRATOR = 'Administrator'

    name = models.CharField(max_length=127, blank=False, null=False)
    surname = models.CharField(max_length=127, blank=False, null=False)
    login = models.CharField(max_length=127, blank=False, null=False)
    password = models.CharField(max_length=1023, blank=False, null=False)
    email = models.EmailField()
    employee_role = models.CharField(max_length=31, choices=EmployeeRole.choices, 
    blank=False, null=False)
    salary = models.DecimalField(max_digits=10, decimal_places=2)
    department = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True, 
    blank=True)
    last_login_date = models.DateField(auto_now=True)
    created_date = models.DateField(auto_now_add=True)

    def __str__(self):
        return f"{self.name} {self.surname} - {self.employee_role}"

That's my urls:

urlpatterns = [
path('employees/<int:pk>', views.employee_details),
path('employees/', views.employee_list_or_add),
]

And that's my views:

@csrf_exempt
def employee_list_or_add(request):
    if request.method == 'GET':
        employees = Employee.objects.get(id=4)

        serializer = EmployeeSerializer(employees)
        print(serializer)
        return JsonResponse(serializer.data, safe=False)

    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = EmployeeSerializer(data=data)

        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)

I'm learning with REST documentation, I'm on first chapter - serialization. But I can't get any objects from db. No matter if I use Employee.objects.all() (with many=True in serializer) like in documentation or Employee.objects.get(pk=4) like currently in my code - I'm always getting error

invalid literal for int() with base 10: b'17 21:19:04.767380'

That's the time of last_login_date of first record in Employee db. But in .get() function I specified 'pk' so why it's trying to filter it by datetime?

I would be very grateful for any help.

0 Answers
Related