【问题标题】:Django Admin Custom Url PathDjango 管理员自定义 URL 路径
【发布时间】:2019-07-09 03:47:51
【问题描述】:

您好,我想在我的 django 管理员中创建一个自定义 url。

编辑对象时的默认 URL 是。

http://localhost:8000/admin/cart/cart_id/change
In my admin
http://localhost:8000/admin/cart/1/change

我有一个名为购物车唯一 ID 的字段。我想创建一个自定义 url,其行为类似于 django admin 中的编辑 URL。

http://localhost:8000/admin/cart/uniq_id/change
http://localhost:8000/admin/cart/H2KPAT/change

这可能实现吗?

【问题讨论】:

    标签: django django-models django-views django-admin


    【解决方案1】:

    默认情况下,管理员将使用模型的主键作为管理 url,您可以将此唯一字段设置为模型的主键以实现此目的。

    your_field = models.TypeOfField(primary_key=True)
    

    如果您不想这样做,您可以覆盖模型管理员的 get_object 方法

    def get_object(self, request, object_id, from_field=None):
        queryset = self.get_queryset(request)
        model = queryset.model
        # This would usually default to the models pk
        field = model._meta.get_field('you_field') if from_field is None else model._meta.get_field(from_field)
        try:
            object_id = field.to_python(object_id)
            return queryset.get(**{field.name: object_id})
        except (model.DoesNotExist, ValidationError, ValueError):
            return None
    

    【讨论】:

      【解决方案2】:

      在您的模型中,如果您使用自己制作的主键而不是 django id,它将起作用。

      class Cart(models.Model):
          my_key = models.IntegerField(primary_key=True)
          # my_key will be show in the url in the admin panel.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-08
        • 2013-02-16
        • 2016-12-05
        • 2016-03-01
        • 2010-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多