【问题标题】:Django changelist on instance click redirect to a instance's foreign key model实例上的 Django 更改列表单击重定向到实例的外键模型
【发布时间】:2014-10-29 02:54:06
【问题描述】:

我有 2 个模型:

class Offer:
    code = ...
    company = ....

class Product:
    price = models.DecimalField
    name = models.CharField
    offer = models.ForeignKey(Offer)

在管理员中,在显示所有产品实例的更改列表视图中,我希望当您单击产品实例时,您将被重定向到更改视图以编辑产品外键指向的报价。

【问题讨论】:

  • 我是否理解正确,您根本不想访问 Product 的 changeview?我认为您几乎可以从管理站点中删除产品,并改用 Offer 的管理员。
  • 不,我希望当我点击一个产品时,而不是打开一个产品,我想打开这个产品指向的报价

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


【解决方案1】:

您应该重写ModelAdminchange_view 方法,如下所示:

from django.contrib import admin
from django.shortcuts import redirect

from yourapp.models import Product

class ProductAdmin(admin.ModelAdmin):
    def change_view(request, object_id, form_url='', extra_context=None):
        return redirect(
            "admin:yourapp_offer_change",
            args=(Product.objects.get(pk=object_id).offer.pk,)
        )

admin.site.register(Product, ProductAdmin)

yourapp 替换为您拥有OfferProduct 模型的Django 应用程序的名称。

【讨论】:

  • 非常感谢,你帮了我很多,即使我使用了这个解决方案:return redirect('/gestionale/technicians/contracttech/%s' % str(ProductHaccp.objects.get(id) =object_id).offer.id)) 非常感谢!
  • @exrezzo 通常在 Django 中按原样指定 URL 是不好的。您应该使用reverse 函数、{% url %} 模板标签等。更多信息请点击此处:docs.djangoproject.com/en/dev/topics/http/urls/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2022-09-27
  • 2011-03-02
  • 2016-02-15
  • 2013-06-19
  • 2011-01-21
  • 2019-12-22
相关资源
最近更新 更多