Ошибка Django при удалении связи ForeignKey

#python #django

#python #django

Вопрос:

У меня есть класс следующим образом:

 class Mission(models.Model):
    taxi = ForeignKey(Taxi, null=True, blank=True, unique=True, related_name="mission")
    passenger = ForeignKey(Passenger, null=True, blank=True, unique=True, related_name="mission")
  

Теперь в классе Taxi есть метод:

 def turn_free(self):
    ....
    self.mission_set.clear()
    passenger.mission_set.clear() # passenger has been fetched
  

Первая попытка очистить миссию в Taxi выполняется успешно, но вторая попытка для пассажира сообщает об ошибке: ccst_mission.passenger_id может быть не нулевым

Может ли кто-нибудь мне помочь?

Комментарии:

1. Точно ли схема отражает модель?

Ответ №1:

Убедитесь, что ваша база данных была обновлена должным образом.

Например, если у вас изначально было (без указания null = True)

 passenger = Foreignkey(Passsenger, unique=True)
  

И добавил значение null = True позже, обычная база данных syncdb не будет обновлять этот столбец, чтобы разрешить значение null.

Если что-либо из этого звучит знакомо, попробуйте выполнить sqlclear в приложении (или полностью удалить базу данных), а затем создать новую syncdb.