1
私は既存の値で推測されるべき編集フォームを作ろうとしています。私はすべてのフィールドを事前に設定していますが、外部フィールドは私に問題を与えています。DBからのデータで事前にformset_factoryを集計してください
は、ここに私のforms.py
def make_bowling_form(teamid, fixtureid):
class BowlingForm(forms.Form):
player = forms.ModelChoiceField(
queryset=PlayerShortlist.objects.filter(
team = teamid,
fixture = fixtureid
)
)
overs = forms.FloatField(initial=0.0)
runs = forms.IntegerField(initial=0)
wickets = forms.IntegerField(initial=0)
return BowlingForm
であり、それは正しく、外部キーフィールドを除いて、私にすべての値を与えている
@login_required
def edit_bowling(request, team_id, fixture_id):
template = get_template('cricket/edit_bowling.html')
if Team.objects.get(id=team_id) == Team.objects.get(owner=request.user):
matchscorecard = InningsCard.objects.get(team = team_id, fixture = fixture_id)
bowlers = BowlingDetail.objects.filter(innings = matchscorecard)
bowlingforms = formset_factory(
make_bowling_form(team_id, fixture_id),
extra=0,
)
bowlingforms = bowlingforms(initial = bowlers.values())
page_vars=Context({
'loggedinuser': request.user,
'bowlers': bowlers,
'bowlingforms': bowlingforms,
})
else:
error = "You dont have permission to add score for this team"
page_vars=Context({
'loggedinuser': request.user,
'error': error
})
crsfcontext = RequestContext(request, page_vars)
output = template.render(crsfcontext)
return HttpResponse(output)
のviews.py。 tは、さらに私はこのケースで選択した値である
<select name="form-0-player" id="id_form-0-player">
<option value="" selected="selected">---------</option>
<option value="37">AC</option>
<option value="38">AD</option>
<option value="39">DD</option>
<option value="40">LF</option>
<option value="41">22</option>
<option value="42">dkja</option>
</select>
..上に行って、(bowlers.valueを印刷)
[{'runs': 32, 'innings_id': 1, 'wickets': 1, 'player_id': 3, 'overs': 4.0, 'id': 1}, {'runs': 21, 'innings_id': 1, 'wickets': 3, 'player_id': 4, 'overs': 4.0, 'id': 2}, {'runs': 19, 'innings_id': 1, 'wickets': 3, 'player_id': 2, 'overs': 4.0, 'id': 3}]
と私のテンプレートが私を与える調査-------- ---それは私の選ばれた価値ですが、私のbowlers.valueは私に名前を与えません。それは私にIDを与えます。
どのように状況を修正できますか?
//マウス
問題が残っている...私は、モデルフォームセットを持つことができます。 ..それはPlayerShortlist内のすべてのオブジェクトを含んでいます。PlayerShortlistがクエリーセットを最初に適用した場合、フィールドはpopuを取得しませんレット。 – debuggerpk
次に、フォームの '\ _ \ _ init \ _ \ _'に 'self.fields ['player']。queryset'を制限しようとします。また、 'PlayerShortlist'のForeignKeyである' BowlingDetail'にフィールド 'player'がありますか? – ilvar