Django - Heroku - отладочная ошибка 500 при удалении объекта в Prod

Проблема:

  • Серверная ошибка 500 при попытке удалить учетную запись пользователя в Prod.

Сценарии:

  • Удаление учетной записи пользователя в Dev - работает нормально
  • Создать учетную запись пользователя в Prod - работает нормально
  • Удаление учетной записи пользователя в Prod - ошибка 500

view.py:

@login_required 
def account_destroy_view(request, id=None, *args, **kwargs):   
  try:
    obj = request.user   
  except request.user.DoesNotExist:
    raise Http404   
  if request.method == "POST":
    try:
      customer = StripeRecord.objects.get(user_id=obj.id)
      stripe.api_key = config('STRIPE_API_KEY')
      stripe.Customer.delete(customer.stripe_customer_id)
    except StripeRecord.DoesNotExist:
      pass
    obj.delete()
    return redirect("/")
  return render(request, "accounts/delete.html", {"object": obj})

accounts model.py:

class User(AbstractUser):
  date_time = models.DateTimeField(default=datetime.datetime.now())

stripe model.py:

User = settings.AUTH_USER_MODEL

class StripeRecord(models.Model):
  user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
  ...

Журнал Героку:

Sep 23 19:37:37 weatherapp app/web.1 10.1.24.136 - - [24/Sep/2021:02:37:36 +0000] "POST /delete/ HTTP/1.1" 500 145 "https://www.weatherapp.com/delete/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52"

Что я пробовал и вопросы:

  • Я проверил логи Stripe, объект был удален на Stripe. Значит, проблема не в env var или интеграции Stripe.
  • Попробовал удалить учетную запись пользователя напрямую с помощью инструмента Django admin в Prod - все равно ошибка 500. Я подозреваю, что это из-за того, что я создал модель с AbstractUser и она является foreignkey для другой модели?
  • Как получить более подробную информацию об ошибке? ( heroku logs --tail возвращает только то, что я показал выше )

В таблице StripeRecord отсутствует первичный ключ в Prod, потому что я пропустил миграцию после внесения изменений в модель.

Проблема была решена после сброса Prod DB (к счастью, это личный проект).

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