【发布时间】:2020-10-04 10:13:01
【问题描述】:
该视图仅适用于 PK,但是,问题是我在实时站点上的 PK 是一个不连贯的字符串,我想让一篇文章的标题连贯以提高 SEO。我不想把PK改成蛞蝓。我两个都想要。
当我尝试同时添加 PK 和 slug 时,它失败了,我得到了错误:没有反向匹配。
网址路径:
path('idea/<slug:slug>,<int:pk>', views.IdeaDetailView.as_view(), name='detail')
型号:
class Idea(models.Model):
idea_id = models.UUIDField(primary_key=True, default=uuid.uuid4, help_text='Searches ID')
idea_number = models.IntegerField(blank=True, null=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
idea_title = models.CharField(max_length=300, blank=True, null=True)
idea_text = NonStrippingTextField(max_length=10000, blank=True, null=True)
Views.py:
class IdeaDetailView(generic.DetailView):
model = Idea
template_name = "idea/detail.html"
def get_context_data(self, **kwargs):
context = super(IdeaDetailView, self).get_context_data(**kwargs)
context['results'] = Idea.objects.filter(idea_id=self.kwargs.get('pk'))
return context
Admin.py:
class IdeaAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("idea_title",)}
我想添加一个 slug,即 idea_title,但是如果我尝试将它添加到 URL 中,它会失败。
【问题讨论】:
标签: django primary-key django-urls slug