django - Django 将请求数据传递给 Forms.py
问题描述
情景;
我们得到了一个带有字段的表单,里面有一个组合框,里面装满了项目。
我们有租户,每个用户都有 TenantID,所以当 A1 用户(租户 ID 1)调用创建表单时,我们需要使用查询过滤过滤该组合框以仅过滤 A1 用户项。
其他租户也是如此。
如何传递该动态租户 ID。
顺便说一句,对于存储在抽象类 django core USER 中的每个用户租户 ID,添加了新字段租户 ID。任何建议我都愿意接受,谢谢您的关注。
状态:已解决!
表格.py
class ItemForm(forms.ModelForm):
class Meta:
model = Items
fields = ('id', 'item', 'start', 'end')
widgets = {
'start': DateTimePickerInput(format='%Y-%m-%d %H:%M'),
'end': DateTimePickerInput(format='%Y-%m-%d %H:%M'),
}
def __init__(self, *args, **kwargs):
super(ItemForm, self).__init__(*args, **kwargs)
self.fields['item'].queryset = Items.objects.filter(tenantid=int(User.tenantid))
视图.py
@login_required()
def create_item_record(request):
if request.method == 'POST':
form = ItemForm(request.POST)
if request.method == 'GET':
tenantidX = request.user.tenantid
form = ItemForm()
return save_item_form(request, form, 'items_create_partial.html')
解决方案
只需将用户从请求传递到您的表单:
class ItemForm(forms.ModelForm):
class Meta:
model = Items
fields = ('id', 'item', 'start', 'end')
widgets = {
'start': DateTimePickerInput(format='%Y-%m-%d %H:%M'),
'end': DateTimePickerInput(format='%Y-%m-%d %H:%M'),
}
def __init__(self, user, *args, **kwargs):
super(ItemForm, self).__init__(*args, **kwargs)
self.fields['item'].queryset = Items.objects.filter(tenantid=int(user.tenantid))
@login_required()
def create_item_record(request):
if request.method == 'POST':
form = ItemForm(request.user, request.POST)
if request.method == 'GET':
form = ItemForm(request.user)
return save_item_form(request, form, 'items_create_partial.html')
推荐阅读
- lisp - 创建 4*4 表 CommonLISP 游戏
- javascript - 显示内容的 WordPress 功能
- python - python - 如何遍历列表列表列表列表列表的列表...在python中的坐标对列表列表?
- jquery - 如何找到表单中选中的下一个复选框
- python - 如何使用 tkinter 从另一个文件更新正在运行的函数中的变量?
- amazon-web-services - AWS EC2 实例在长页面加载 30 秒时始终失败
- vue.js - 如何在另一个文件中调用编辑组件?
- ios - Swift 5:使用数组根对象从 JSON 中获取多个值
- r - 子集 !is.na 为多个条件意外结果
- django - 使用ajax过滤django中的选择字段