我在views.py中有一个视图,在我的forms.py中有一个表单。 我需要将我的视图列表[]传递给我的表格的MultipleChoiceField。
这是我的代码,我当然想念一些......
非常感谢
views.py
def view_favorite(request):
media = settings.MEDIA
game_logo = settings.GAME_LOGO
if request.user.is_authenticated():
if request.method == 'POST' :
return render(request, 'favorite.html', locals())
else:
favs = FavoriteGames.objects.filter(user_id=request.user.id).values_list('game_id', flat=True)
list = []
for fav in favs:
game = Games.objects.get(id=fav)
list.append((game.id, game.guid, game.title, game.logo, "checked"), )
nogame = Games.objects.filter(~Q(id__in=favs)).values_list('id', 'guid', 'title', 'logo')
form = GamesEditorForm(list)
forms.py
class GamesEditorForm(forms.Form):
def __init__(self, list, *args, **kwargs):
super(GamesEditorForm, self).__init__(*args, **kwargs)
favorite_games = forms.MultipleChoiceField(
required=True,
initial=True,
widget=forms.CheckboxSelectMultiple(),
choices=list,
)
答案 0 :(得分:0)
您可以直接将数据作为参数传递给函数
<强> views.py 强>
from .forms import my_func
def some_func(request):
my_list = [1,2,3]
my_func(request, my_list)
<强> forms.py 强>
def my_func(request, my_list):
#Do something with my_list
答案 1 :(得分:0)
您可以做的是覆盖表单的默认init方法,并在创建表单时处理所有逻辑:
class YourOwnForm(forms.Form):
a_field = forms.IntegerField(
label="field",
widget=forms.HiddenInput())
def __init__(self, your_custom_list=None, *args, **kwargs):
"""
Intantiation service.
This method extends the default instantiation service.
"""
super(CustomizationForm, self).__init__(*args, **kwargs)
if your_custom_list:
do stuff...
else:
error...
你会这样称呼它:
my_form = YourOwnForm(data, your_custom_list=[5,8,9])