Не удается получить доступ к object.id в postgreSQL с приложением django, развернутым в Heroku (внутренняя ошибка сервера 500) - PullRequest
0 голосов
/ 26 декабря 2018

Я развернул приложение блога Django в Heroku, и у меня возникли проблемы с доступом к объектам через их идентификатор.

Когда Debug = True в settings.py, все работает нормально.

И дажекогда Debug = False, нет другой проблемы, такой как проблема статических файлов, все работает нормально.Я искал много статей, но большинство из них касалось статических файлов, а не моей ситуации.

Во-первых, Мои models.py:

class Post(models.Model):
    title = models.CharField(verbose_name='TITLE', max_length=120)
    slug = models.SlugField(verbose_name='SLUG', unique=True, allow_unicode=True, max_length=120)
    content = RichTextUploadingField(verbose_name='POST CONTENT')
    create_date = models.DateTimeField(verbose_name='Created date', auto_now_add=True)
    author = models.ForeignKey(User, null=True, on_delete=models.CASCADE)

class Bookmark(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(verbose_name='SLUG', unique=True, allow_unicode=True, max_length=100)
    address = models.URLField(verbose_name='url', unique=True)
    description = models.CharField(max_length=256)
    category = models.ForeignKey(BookmarkCategory, on_delete=models.CASCADE, null=True, blank=True)

И в urls.py:

path('post/<int:id>/', views.PostDetailView.as_view(), name='post_detail'),
path('bookmark/<int:id>/update/', views.BookmarkUpdateView.as_view(), name='bookmark_update'),

Проблема возникает при попыткечтобы получить доступ к моему объекту Post или Bookmark в шаблонах, используя id, например:

{% url 'myblog:post_detail' post.id %}

или

{% url 'myblog:bookmark_update' bookmark.id %}

Я ожидаю, что это DetailView или UpdateView объектов, но вместо этого у меня есть внутренняя ошибка сервера (показывается мой 500.html.)
Я тоже попробовал int: pk вместо int: id, но просто та же ошибка.

Сновавсе прекрасно, когда Debug = True, а также все остальное работает нормально, даже когда Debug = False.

Есть несколько archiveView, основанных на модели Post и функции поиска и т. д., все они работают.

Поэтому я попытался изменить urls.py следующим образом:

path('post/<slug>/', views.PostDetailView.as_view(), name='post_detail'),
path('bookmark/<slug>/update/', views.BookmarkUpdateView.as_view(), name='bookmark_update'),

И тогда это просто работает!Я могу видеть представления, которые я запрашивал, используя слагов из шаблонов.Проблема возникает, только когда я пытаюсь получить доступ к объектам, используя ID объекта.

Так что я предполагаю, что есть некоторая проблема с postgreSQL, возможно, некоторая проблема с тем, как он хранит ID объектов (возможно, потому что IDне определено явно в models.py?), потому что, когда я работал с SQLite3 локально, не было проблем с доступом через ID объектов.

На данный момент я могу просто избежать этой проблемыиспользуя slug вместо int: id, но я хочу использовать int: id, потому что основанные на slug URL слишком избыточны.

Пожалуйста, кто-нибудь может помочь определить, в чем проблема и какое решение может быть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...