场景;

我们有一个from字段,在窗体的内部有一个组合框,其中填充有项目。

我们有租约,每个用户都有TenantID,因此当A1用户(tenantid 1)调用创建表单时,我们需要使用查询过滤来过滤该组合框以仅过滤A1 UserItem。

其他租户也是如此。

我该如何通过那充满活力的tenantid。

顺便说一句,存储在抽象类django核心USER中的每个用户tenantid添加了新字段tenantid。
我对此有任何建议,谢谢您的关注。

状态:已解决!

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')

最佳答案

只需将用户从请求传递到您的表单即可:

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')

关于Django将请求数据传递给Forms.py,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58094155/

10-12 20:45