【问题标题】: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.