python - 是否可以将额外数据作为参数传递给 django 管理表单?
问题描述
我有一个带有已实现 Django 管理界面的 Django 模型,我想显示模型的表单。如果表单只显示模型的属性,这是一个简单的任务。我的问题是我想根据经过身份验证的用户更改表单的字段。有什么方法可以将额外的数据(用户)作为参数从管理员传递给 ModelForm初始化函数?我找到了一些教程,但它们的实现仅适用于基本视图,不适用于 Admin 实现。
我还尝试将一个额外的参数传递给管理员 get_form() 函数,但这是不可能的。我收到提供了意外参数的错误。
我的表格:
Class ProfileForm(forms.ModelForm):
first_name = forms.CharField(required=True)
last_name = forms.CharField(required=True)
class Meta:
model = Profile
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
interests = ProfileInterest.objects.filter(
user=user # HERE I WOULD LIKE TO ACCESS THE USER (request.user)
)
for i in range(len(interests) + 1):
field_name = 'interest_%s' % (i,)
self.fields[field_name] = forms.CharField(required=False)
try:
self.initial[field_name] = interests[i].interest
except IndexError:
self.initial[field_name] = “”
# create an extra blank field
field_name = 'interest_%s' % (i + 1,)
self.fields[field_name] = forms.CharField(required=False)
我正在尝试过滤用户的ProfileInterest查询集,然后将它们显示为表单字段。我需要以某种方式将用户实例传递给 Admin 定义中的表单。
解决方案
推荐阅读
- c# - LDAP 服务器不可用异常
- vba - 在 Worksheet_PivotTableUpdate 中获取工作表时出错
- sql-server - 仅使用 nvarchar(100) 与 nvarchar(255) 的 10 个字符的存储命中率是多少?
- html - 移动视图屏幕右侧的间隙
- symfony - 在 symfony 4 的 Security 方法中添加一些东西
- amazon-web-services - Terraform 为实例 EBS 块存储应用巨大的索引值
- java - Response.header 是否覆盖 @Produces 注释?
- java - Jenkins - 在不同的机器上使用本地环境变量执行脚本
- ios - 如何访问不同目标的类实例?
- c - 如何更改结构数组中的变量而不更改其他变量