我正在编写一个 django 应用程序,我希望用户能够从下拉菜单中选择一个 [team_number],然后当他们点击提交时被重定向到一个页面,该页面呈现与那个选择。我正在使用重定向类 View,但我遇到的问题是,没有显示下拉菜单来从 html 页面 team-stats.html 上选择 [team_number]。
views.py:
class TeamStatsView(View):
def get(self, request, *args, **kwargs):
return render(request, 'team-stats.html',
{'team_number': TeamStats()})
def post(self, request, *args, **kwargs):
team_number = TeamStats(request.POST, request.FILES)
if team_number.is_valid():
# do stuff & add to database
team_number.save()
team_number = TeamStats.objects.create()
# use my_file.pk or whatever attribute of FileField your id is
# based on
return HttpResponseRedirect('/team-stats/%i/' % team_number.pk)
return render(request, 'team-stats.html', {'team_number': team_number})
models.py:
class Team(models.Model):
team_number = models.IntegerField()
team_notes = models.CharField(max_length=150)
event_id = models.ForeignKey(
'Event', on_delete=models.CASCADE, unique=False)
def __unicode__(self):
return str(self.team_number)
class Meta:
db_table = 'teams'
app_label = 'frcstats'
forms.py:
class TeamStats(forms.ModelForm):
class Meta:
model = Team
fields = ['team_number']
team-stats.html:
<form method="post" action="">
{% csrf_token %} {{ TeamStatsView }}
<input type="submit" value="Submit" />
</form>
如果我需要更新任何其他文件以显示我正在尝试执行的操作,请告诉我。谢谢
最佳答案
尝试将 View 变量名称更改为 team_numbers 并将 team-stats.html 代码段替换为以下内容:
<form method="post" action="">
<select name="teams">
{% for team_number in team_numbers %}
<option value="{{ team_number }}">Team Num: {{ team_number }}</option>
{% endfor %}
</select>
</form>
然后将您的 View 更新为:
class TeamStatsView(View):
def get(self, request, *args, **kwargs):
return render(request, 'team-stats.html',
{'team_numbers':Team.objects.values('team_number')})
关于python - html View 中缺少 django 模型下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35494580/