请看一下代码,如果您无法理解所发生的情况,我将在最后进行解释
我有一个名为Good的模型
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})
所以我想在这里做的是:-
我想呈现一个名为GoodForm
的表单,该表单是与模型ModelForm
相关的Good
。
该表单呈现为称为Love
的表中已经显示的选项。
查询Love.objects.filter(user=user)
等效于request.user.love_set.all()
(从某种意义上说,如果不是完全的话)
我希望用户选择已经存在的选项,然后单击提交。
成功提交后,我希望将数据保存在ans
表的Good
内部,该表已使用ForeignKey
我的问题是:
如何将表单中的数据保存到数据库中?它将所选的ChechBoxes
保存为List
。例如,如果我选择1,2,3
并向用户查询,它会向我显示['1','2','3']
我是否可以通过使用initial = some_list / query(或不使用传递请求对象且不使用构造函数)在视图中使用Love Form内部视图中的数据预填充表单?
任何答案都可以,其解决方案也可以。非常感激。预先谢谢你。