gpt4 book ai didi

django - 如何在 get_success_url 中引用不同模型的 slug?

转载 作者:行者123 更新时间:2023-12-05 01:39:21 25 4
gpt4 key购买 nike

设置

我的应用中有两个模型。一个用于期刊,另一个用于该期刊的条目。我写了一个 CreateView 类,它允许用户为当前位于的任何 Journal id 创建一个 Journal 条目。理想情况下,我希望该类使用更新的条目“刷新”,或者换句话说,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

模型.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

这是有道理的,因为 to_journal_entry 模型没有那个字段。

问题

我确定 views.py 中的 get_success_url()models.py 中的 get_absolute_url() > 做错了,但我找不到对这些工作原理的很好解释。我应该如何设置它们才能达到预期的效果?提前致谢!

感谢大家的关注。最好的,Rasul。

最佳答案

你可以只关注关系:

def get_success_url(self):
return reverse('to-journals', kwargs={'slug': self.object.journal_name.slug})

关于django - 如何在 get_success_url 中引用不同模型的 slug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58452648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com