如何呈现使用forms.ModeForm从DB使用数据的CheckboxSelectMultiple

2019-10-29 07:02发布

请看看代码,如果你无法理解到底是怎么回事,我解释它到底

我有一个名为好的模型

class Good(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    ans = models.CharField(max_length=1024)

和形式

class GoodForm(forms.ModelForm):
    def __init__(self, request=None, *args, **kwargs):
        super(GoodForm, self).__init__(*args, **kwargs)
        self.input_list = request.user.love_set.all()
        self.fields['ans'] = forms.MultipleChoiceField(
            label="",
            choices=[(c.ans, c.ans) for c in self.input_list],
            widget=forms.CheckboxSelectMultiple
        )

    class Meta:
        model = Good
        fields = ('ans',)

和用于这个视图是

@login_required
def good_form(request):
    form = GoodForm(request)
    if request.method == 'POST':
        form = GoodForm(request, request.POST)
        if form.is_valid():
            answer = form.save(commit=False)  #problem is here
            answer.user = request.user
            answer.save()
            return redirect('app-2:money')

        else:
            form = GoodForm(request)
            return render(request, 'purpose_using_DB/good_at_form.html', {'form': form, 'error': 'Error occured'})

    else:
        return render(request, 'purpose_using_DB/good_at_form.html', {'form': form})

所以我想在这里做的是: -

  1. 我想呈现一个名为形式GoodForm这是一个ModelForm相关模型Good

  2. 该形式呈现在所谓的表中已经提出的备选方案Love

  3. 查询Love.objects.filter(user=user)相当于request.user.love_set.all()在某种意义上如果不是完全)

  4. 我希望用户选择了目前已经选择和点击提交。

  5. 在成功提交,我想的要保存的数据里面ansGood ,使用映射到用户表ForeignKey

我的问题是:

  1. 如何从形式保存数据的数据库? 它保存所选ChechBoxesList 例如,如果我选择1,2,3和使针对用户的查询,它显示我['1','2','3']

  2. 我可以预先填充通过使用初始= some_list /查询中使用的内部视图从情形式的数据的形式(或不使用通过请求对象的,并且不使用构造函数)?

任何问题的答案将其解决方案会做。 非常感激。 先感谢您。

文章来源: How to render a CheckboxSelectMultiple form using forms.ModeForm that uses data from DB as :-> SomeModel.objects.filter(user=request.user)