新的 Urls 模式和同名的多个变量

New Urls patterns and multiple variables with the same name

我使用的是 Django 2.0 类型的 url,并且我的 url 中包含多个同名变量。我也在使用 ClassBasedView

path('/companies/<int:pk>/products/<int:pk>/', AccountCompanyProductDetailView.as_view()

我使用 pk 是因为它是主键,CBV 知道如何使用它(与其他模型字段类似)。

如果我使用其他名称,CBV 将不知道要搜索什么。

在 CBV 中,我如何获取参数并知道哪个是哪个。 ? Django 如何知道我在每个位置需要哪个模型的 pk?

Django 不知道如何处理这个。您需要重命名参数并在 CBV 中访问它们。 这可能如下所示:

urls.py:

path('/companies/<int:pk1>/products/<int:pk2>/', AccountCompanyProductDetailView.as_view())

views.py:

class AccountCompanyProductDetailView(DetailView):
    model = Product

    def get_object(self):
        pk1 = self.kwargs['pk1']
        pk2 = self.kwargs['pk2']
        company = get_object_or_404(Company, pk=pk1)
        product = get_object_or_404(Product, pk=pk2)
        return product

您也需要在其他视图中执行此操作。覆盖相应的方法,如 get_queryset。如上所示访问kwargs