Неожиданное поведение при проверке существования кверисетов в Django

У меня есть такая модель

class Student(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    archived = models.BooleanField(default=False)

    class Meta:
        constraints = [
            UniqueConstraint(
                fields=["first_name", "last_name"], condition=Q(archived=False), name="unique_user"
            )
        ]

и код, как показано ниже

d = {"first_name": "John", "last_name": "Doe"}
students = Student.objects.filter(first_name=d.get("first_name"), last_name=d.get("last_name"))

for student in students:
   """Doing some stuff here"""
   pass

if not students:
  Student.objects.create(first_name=d.get("first_name"), last_name=d.get("last_name"))

Я получаю ошибку целостности из последней строки, где я вызываю objects.create

дублирующееся значение ключа нарушает уникальное ограничение "unique_user" DETAIL: Ключ (имя_пользователя, фамилия_пользователя)

В objects.filter() у меня есть два поля, которые являются частью уникального ограничения, и я использую тот же набор queryset до вызова objects.create, поэтому эта ошибка не должна возникать, если только что-то идет не так с набором queryset. Этот код работает без проблем большую часть времени. Только один раз возникла эта ошибка. Есть идеи, что происходит? Возможно, между запросом фильтрации и запросом создания объект был создан, и ошибка целостности возникла в запросе создания. Но это не тот случай. Я проверил базу данных, там ничего не было создано. Более того, там уже были данные, которые были созданы за несколько часов до того, как они соответствовали этим условиям. Таким образом, запрос фильтра возвращает непустой набор запросов, а запрос create даже не должен был вызываться.

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