如何在Django ModelAdmin中调用用户变量
How to call user variables in Django ModelAdmin
我是 Django 的新手,无法理解如何在 ModelAdmin
中调用适当的变量。如果我在 /admin/mt_app/my_model/
上有用户名等信息,或者我在 /admin/auth/user/2/change/
上有所有用户信息,我如何在 ModelAdmin 视图中调用这些变量?
我通过插入我自己的用户使其 select 有效地工作,但我不知道如何从视图中调用相关用户或模型。我所能找到的只是如何调用当前用户,但同样,我需要页面所涉及的用户,而不是活动用户。例如:/admin/algorx/pt_data/41/change/
或 /admin/auth/user/2/change/
我现在拥有的是:
Admin.py
class pt_dataAdmin(admin.ModelAdmin):
fieldsets = (
. . .
)
# This gets passed into change_view as extra context
def get_dynamic_info(self):
user = User.objects.get(email='MYSUPERUSEREMAIL')
return user
. . .
def change_view(self, request, object_id, form_url='', extra_context=None):
. . .
所以有效的方法是将我的超级用户的电子邮件传递给 select 该用户:
user = User.objects.get(email='MYSUPERUSEREMAIL')
return user
但是我想做的是select当前正在查看的页面的用户。如果我在下面 URL 我如何 select 该用户的变量?
/admin/auth/user/2/change/
我看到很多关于 select 当前用户的问题,但我想知道如何 select 正在查看的用户。任何帮助将不胜感激,这对我的新手来说已经是 2 天的障碍了。
在Whosebug苦苦挣扎了两天,拼出了答案!
首先,我在我的模型中添加了一个字段,其中包含创建它的用户:
MODELS.PY:
pt_user = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE)
然后,我添加了
ADMIN.PY
@admin.register(pt_data)
class pt_dataAdmin(admin.ModelAdmin):
fieldsets = (
. . . )
def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context = extra_context or {}
pt_model = pt_data.objects.get(id=object_id)
user = pt_model.pt_user
loglink = get_query_string(user)
extra_context['osm_data'] = {'link': loglink}
# extra_context['osm_data'] = self.get_dynamic_info()
return super(pt_dataAdmin, self).change_view(
request, object_id, form_url, extra_context=extra_context,
)
这让我查询 URL 的 object_id 以在数据库中找到模型,然后从模型中提取用户。 get_query_string
来自一个名为 Sesame 的包,它创建了一个神奇的登录 link 供用户在没有密码的情况下登录。我 return 我的 chage_view
作为 extra_context
这样我就可以在模板上调用它 {{ osm_data.link }}
我是 Django 的新手,无法理解如何在 ModelAdmin
中调用适当的变量。如果我在 /admin/mt_app/my_model/
上有用户名等信息,或者我在 /admin/auth/user/2/change/
上有所有用户信息,我如何在 ModelAdmin 视图中调用这些变量?
我通过插入我自己的用户使其 select 有效地工作,但我不知道如何从视图中调用相关用户或模型。我所能找到的只是如何调用当前用户,但同样,我需要页面所涉及的用户,而不是活动用户。例如:/admin/algorx/pt_data/41/change/
或 /admin/auth/user/2/change/
我现在拥有的是:
Admin.py
class pt_dataAdmin(admin.ModelAdmin):
fieldsets = (
. . .
)
# This gets passed into change_view as extra context
def get_dynamic_info(self):
user = User.objects.get(email='MYSUPERUSEREMAIL')
return user
. . .
def change_view(self, request, object_id, form_url='', extra_context=None):
. . .
所以有效的方法是将我的超级用户的电子邮件传递给 select 该用户:
user = User.objects.get(email='MYSUPERUSEREMAIL')
return user
但是我想做的是select当前正在查看的页面的用户。如果我在下面 URL 我如何 select 该用户的变量?
/admin/auth/user/2/change/
我看到很多关于 select 当前用户的问题,但我想知道如何 select 正在查看的用户。任何帮助将不胜感激,这对我的新手来说已经是 2 天的障碍了。
在Whosebug苦苦挣扎了两天,拼出了答案!
首先,我在我的模型中添加了一个字段,其中包含创建它的用户:
MODELS.PY:
pt_user = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE)
然后,我添加了
ADMIN.PY
@admin.register(pt_data)
class pt_dataAdmin(admin.ModelAdmin):
fieldsets = (
. . . )
def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context = extra_context or {}
pt_model = pt_data.objects.get(id=object_id)
user = pt_model.pt_user
loglink = get_query_string(user)
extra_context['osm_data'] = {'link': loglink}
# extra_context['osm_data'] = self.get_dynamic_info()
return super(pt_dataAdmin, self).change_view(
request, object_id, form_url, extra_context=extra_context,
)
这让我查询 URL 的 object_id 以在数据库中找到模型,然后从模型中提取用户。 get_query_string
来自一个名为 Sesame 的包,它创建了一个神奇的登录 link 供用户在没有密码的情况下登录。我 return 我的 chage_view
作为 extra_context
这样我就可以在模板上调用它 {{ osm_data.link }}