为字段动态创建帮助文本



我有我的响应表格和视图

class ResponseForm(ModelForm):
    class Meta:
        model = ResponseModel
        exclude = ('author', 'title','submit_count')
        # help_texts = {
        #     'ans1': user.q1.value,
        # }
@login_required
def ResponseFormView(request):
    if request.method == "POST":
        form = ResponseForm(request.POST)
        if form.is_valid():
            submission = form.save(commit=False)
            submission.author = request.user
            submission.save()
            return render(request, 'thanks.html', {})
    else:
        form = ResponseForm()
        return render(request, 'response_tem.html', {'form': form})

我希望" ANS1"字段的帮助文本是request.user的Q1字段的值。我该怎么做?

您可以这样做:

class ResponseForm(ModelForm):
    def __init__(self, *args, **kwargs):
         user = kwargs.pop('user', None)  # popping user from known arguments
         super(ResponseForm, self).__init__(*args, **kwargs) 
         if user:
              self.fields['ans1'].help_text = "Help Text for {}".format(user.username)
    class Meta:
        model = ResponseModel
        exclude = ('author', 'title','submit_count')
@login_required
def ResponseFormView(request):
    if request.method == "POST":
        form = ResponseForm(request.POST)
        if form.is_valid():
            submission = form.save(commit=False)
            submission.author = request.user
            submission.save()
            return render(request, 'thanks.html', {})
    else:
        form = ResponseForm(user=request.user)  # passing user as known argument
        return render(request, 'response_tem.html', {'form': form})

在这里,在视图中,当我启动表单类的对象(标记为注释)时,我将request.user作为已知参数。然后以表格,我正在捕获从视图发送的user并更新字段的帮助文本。

最新更新