覆盖保存方法以在 Django 模型中保存 IP 地址

时间:2021-01-01 09:10:29

标签: python django django-models

我正在处理一个 Django 项目,我需要将用户的 IP 地址保存在我的数据库中。

我可以通过 request.META.get("REMOTE_ADDR") 获取用户的 IP 地址。

目前,我必须在保存和编辑视图中提供 IP 地址。我一直在寻找一个干净的解决方案,以便我可以覆盖模型 save() 方法,并让模型在每次添加新记录或更新任何记录时保存 IP 地址。

但 Django 模型无权访问 request

有什么解决方法吗?或者我是否必须在每次保存和编辑视图中提供 IP 地址。

1 个答案:

答案 0 :(得分:0)

如果我有你的问题,你应该试试这个;

ip_address = request.META.get("REMOTE_ADDR")
your_model.objects.create(ip_address=ip_address)

这将在您的模型中创建一个新条目(此处由 your_model 表示)。请注意,您需要提供模型中存在的所有列。在这里,我只在括号中显示 ip_address,但如果您的模型还存储用户名(例如),那么您还需要提供它。 例如,

your_model.objects.create(username= your_username, ip_address=ip_address)
相关问题