Настройка
В моем приложении две модели. Один для журнала, а другой для записей в этом журнале. Я написал класс CreateView, который позволит пользователю создавать запись журнала для любого идентификатора журнала, в настоящее время находящегося в нем. В идеале я хочу, чтобы класс обновлялся обновленной записью, или, другими словами, get_success_url должен вести страницу, на которой мы в настоящее время расположены.
views.py
class ToJournalEntriesList(LoginRequiredMixin, CreateView):
model = to_journal_entry
template_name = 'to_journals/to_journal_entries_list.html'
fields = ('body',)
def get_success_url(self):
return reverse('to-journals', kwargs={'slug':self.object.slug})
def form_valid(self, form):
current_journal = to_journal.objects.get(journal_user=self.request.user, slug=self.kwargs['slug'])
form.instance.journal_user = self.request.user
form.instance.journal_name = current_journal
return super(ToJournalEntriesList, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super(ToJournalEntriesList, self).get_context_data(**kwargs)
context['to_journal_entries'] = to_journal_entry.objects.all()
return context
models.py
class to_journal(models.Model):
journal_name = models.CharField(max_length = 40)
slug = AutoSlugField(populate_from='journal_name')
date_created = models.DateTimeField(auto_now_add=True)
journal_user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,)
def __str__(self):
return str(self.journal_user) + " " + self.journal_name
def get_absolute_url(self):
return reverse('to-journals')
class to_journal_entry(models.Model):
body = models.TextField()
entry_date = models.DateTimeField(auto_now_add=True)
journal_name = models.ForeignKey(to_journal, on_delete=models.CASCADE,)
journal_user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,)
def __str__(self):
return str(self.journal_name) + " " + str(self.entry_date)
def get_absolute_url(self):
return reverse('to-journal-entries', args=(self.slug))
urls.py
urlpatterns = [
path('', CreateToJournal.as_view(), name='to-journals'),
path('<slug:slug>', ToJournalEntriesList.as_view(), name='to-journal-entries'),
]
Ошибка
С текущей настройкой, которую я имею:
![enter image description here](https://i.stack.imgur.com/S81CY.png)
Какиеимеет смысл, потому что модель to_journal_entry не имеет этого поля.
Вопрос
Я уверен, что и мои get_success_url()
в views.py и get_absolute_url()
в models.py выполнены неправильно, но я не смог найти хорошее объяснение того, как они работают. Как мне настроить их для достижения желаемого результата? Большое спасибо заранее!
Я ценю всех, кто посмотрел. Бест, Расул.