【发布时间】:2020-01-25 09:29:58
【问题描述】:
场景;
我们得到了一个带有字段的表单,在表单内部有一个组合框,它填充了项目。
我们有租户,每个用户都有 TenantID,所以当 A1 用户(租户 ID 1)调用创建表单时,我们需要使用查询过滤过滤该组合框以仅过滤 A1 用户项。
其他租户也是如此。
如何传递该动态租户 ID。
顺便说一句,对于存储在抽象类 django core USER 中的每个用户租户 ID,添加了新字段租户 ID。 任何建议我都愿意接受,谢谢您的关注。
状态:已解决!
Forms.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))
views.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')
【问题讨论】:
-
对于这种过滤,您可能需要使用 ajax 动态呈现它们,而不是原始的 django 表单。
-
应该有一种方法,至少可以在视图侧调用表单时传递参数。
-
您还可以将您的表单分成不同的页面,以便您可以在每个步骤中保持过滤。
-
你的代码不起作用怎么办?还有,为什么GwynBleidD的代码不起作用?
标签: django python-3.x django-models django-forms