I have django Student model like below
class Student(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    score = models.DecimalField(max_digits=10, decimal_places=2)
    def __str__(self):
        return f"Student(id: {self.id}, name: {self.name}, salary: {self.score})"
I have created some users in database also below is django shell output
>>> s = Student.objects.create(name="erik", score=90)
>>> print(s)
Student(id: None, name: erik, salary: 90)   # <----- here is showing id None
>>> Student.objects.all()                                                                                                       
<QuerySet [<Student: Student(id: 1, name: alex, salary: 40.00)>, <Student: Student(id: 2, name: john, salary: 60.00)>, <Student: Student(id: 3, name: erik, salary: 90.00)>]>
when i have called Student.objects.all() then it is showing id.
I want to get id from s variable because i am performing unit testing like below.
class GetSingleStudentTest(TestCase):
    def setUp(self):
        Student.objects.create(name="student1", score=50)
        Student.objects.create(name="student2", score=55)
        Student.objects.create(name="student3", score=80)
        Student.objects.create(name="student4", score=36)
    def test_get_single_student(self):
        # get API response
        response = client.get(reverse("student-detail", kwargs={"pk" : self.student2.pk }))
        # get data from db
        student = Student.objects.get(pk=self.student2.pk)
        serializer = StudentSerializer(student)
        self.assertEqual(response.data, serializer.data)
So when i have tried to access self.student2.pk it is None like we saw in django shell also. So how can i get that id?
because as i know Model.objects.create creates a user and also save into database then why id is None here? I am learning from this guide https://realpython.com/test-driven-development-of-a-django-restful-api/ but they not showed this kind of issues that's why I asked here. I have used setUpTestData method also but same kind of issue is there.
I think AutoField is working perfectly. Is it same as IntegerField but i have specified primary_key=True.
Thank you.
 
    