作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用中有两个模型。一个用于期刊,另一个用于该期刊的条目。我写了一个 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'),
]
使用我当前的设置,我得到:
这是有道理的,因为 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/
我是一名优秀的程序员,十分优秀!