Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django admin中检查实例详细信息是否被打开_Django_Django Models_Django Admin_Django Signals - Fatal编程技术网

如何在django admin中检查实例详细信息是否被打开

如何在django admin中检查实例详细信息是否被打开,django,django-models,django-admin,django-signals,Django,Django Models,Django Admin,Django Signals,是否有可能检查django admin中是否打开了实例详细信息 一个orders的例子很好地说明了这一点——假设django admin中的order实例列表显示中有一个新的order实例。(数据来自django外部) 订单模型有以下字段,当实例出现在列表中时为空 ProcessingPersonAdminId = models.IntegerField(verbose_name=_('Processing Person Admin Id'), db_column='ProcessingPers

是否有可能检查django admin中是否打开了实例详细信息

一个orders的例子很好地说明了这一点——假设django admin中的order实例列表显示中有一个新的order实例。(数据来自django外部) 订单模型有以下字段,当实例出现在列表中时为空

ProcessingPersonAdminId = models.IntegerField(verbose_name=_('Processing Person Admin Id'), db_column='ProcessingPersonAdminId', blank=True, null=True)
我需要做的是——第一个人(想象一下销售部门)点击这个特定的订单实例来查看它的详细信息,然后分配给它。甚至在它显示之前,该字段已经填充了相应的用户数据

我在考虑信号,但在管理、模型或其他任何地方都没有保存或更新任何内容

如果能给我任何关于如何完成这项任务的提示,我将不胜感激。提前感谢。

解决方案1 你的意思是在管理员应用程序中打开changeview页面时?如果是,您可以这样做:

class OrderModelAdmin(admin.ModelAdmin)
   def changeform_view(self, request, *args, **kwargs):
       user = request.user()
       # do something with user
       return super().changeform_view(request, *args, **kwargs)
然而,这真的是你想要做的吗?想象一下,有人不小心点击了一个错误的页面。它们是自动分配的。或者,可能有人想查看订单而不被分配给它。除此之外,这也违背了
GET
请求不应更改数据的原则

解决方案2 一种替代方法是覆盖
ModelAdmin
中的
save\u model
方法:

class OrderModelAdmin(admin.ModelAdmin)
   def save_model(self, request, obj, form, change):
       user = request.user()
       obj.id_of_person = user.id
       return super().changeform_view(self, request, obj, form, change)
这样,每当有人使用管理员对订单进行更改时,就会为该人分配该订单

其他需要考虑的事情
admin应用程序不是设计为生产就绪、面向客户的应用程序。唯一使用它的人应该是开发人员,他们理解他们正在更改的数据。销售部门绝对不应该使用管理员应用程序。为此,您应该写下自己的观点。

非常感谢您的详细回答。我的说明很清楚,虽然我同意“意外点击”部分,但显然这不是问题,因为该字段是可编辑的,因此可以在以后更改:)