簡體   English   中英

django 使用 slug 而不是 pk

[英]django use slug not pk

我正在嘗試在我的 url 中使用 slug,我在其他網站上做得很好,但由於某種原因,我無法在網站的這個區域的 url 中使用 slug,只有主鍵才能獲得所需的結果,我在這里錯過了什么? 與我做過的其他網站的唯一區別是,slug 將用於過濾,我認為這是搞砸了。

模型:

class Desk(models.Model):
    name = models.CharField(max_length=16, unique=True)
    slug = models.SlugField(max_length=16, unique=True)

    def __str__(self):
        return self.slug


class Handover(models.Model):
    desk = models.ForeignKey(
        Desk,
        related_name="handover",
        on_delete=models.CASCADE
    )
    published = models.DateTimeField(auto_now_add=True)
    user = models.CharField(max_length=45)
    ongoing = models.CharField(max_length=1024, null=True, blank=True)
    resolved = models.CharField(max_length=1024, null=True, blank=True)
    planned_work = models.CharField(max_length=1024, null=True, blank=True)
    heightened_awareness = models.CharField(max_length=1024, null=True, blank=True)

在下面的視圖中,出於某種原因,我不能在過濾器中使用“slug”這個詞,它只會引發錯誤。 如果我在瀏覽器的 url 中使用 PK,則當前設置有效,但不是我想要使用的 slug,(我不確定為什么這也有效,我希望這不會因為使用 ' slug' 在網址中)。

這是視圖:

class IndexView(ListView):
    template_name = 'pcc_homepage/index.html'
    queryset = Handover.objects.order_by('-published')

    def get_queryset(self):
        return Handover.objects.filter(desk=self.kwargs['desk'])

這是網址:

urlpatterns = [
    path('home/<slug:slug>/', IndexView.as_view(), name='index'),
    path('handover/', HandoverCreateView.as_view(), name='handover'),
]

我怎樣才能使用人類可讀的單詞而不是整數來完成這項工作。

你可以試試 Handover.objects.filter(desk__slug=self.kwargs['desk'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM