django 外键下拉重定向到 html 页面
django foreignkey dropdown redirect to html page
我正在尝试创建一个具有单个下拉输入的 Django 页面,引用具有数千个条目的数据库,当用户选择其中一项并点击 "submit" 时,它将重定向它们到一个 html 页面,该页面生成他们选择的项目的统计信息。我已经尝试了几件事,但没有任何效果,我最近尝试的是我在这里找到的东西,虽然我也无法让它工作,它向我抛出这个错误:"local variable 'team_number' referenced before assignment"
views.py:
def team_stats(request):
if request.method == 'POST':
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_to_response('team-stats.html', {
'team_number': team_number,
})
forms.py:
class TeamStats(forms.ModelForm):
model = Team
fields = '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'
我希望我所寻求的帮助是有意义的。如果没有,我会尝试更好地解释它。谢谢
我注意到有几处错误,但导致问题的原因是如果方法不是 post,你永远不会设置 team_number,所以你不应该将其包含在上下文数据中
我还更改了您的视图以使用视图 class 而不是基于函数的视图,这将允许视图针对不允许的请求引发不允许的响应
from django.views.generic import View
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 })
要使用它,您必须更改 url、
的目标
url('your_url_regex', TeamStatsView.as_view(), name='should be here'),
我还更改了您的代码以使用 render
而不是 render_to_response
,因为后者不使用请求并且可能会被删除
The edited version is now throwing an error back "ModelForm has no model class specified."
那是因为需要在表单的元数据上设置模型
class TeamStats(forms.ModelForm):
class Meta:
model = Team
fields = ['team_number']
我正在尝试创建一个具有单个下拉输入的 Django 页面,引用具有数千个条目的数据库,当用户选择其中一项并点击 "submit" 时,它将重定向它们到一个 html 页面,该页面生成他们选择的项目的统计信息。我已经尝试了几件事,但没有任何效果,我最近尝试的是我在这里找到的东西,虽然我也无法让它工作,它向我抛出这个错误:"local variable 'team_number' referenced before assignment"
views.py:
def team_stats(request):
if request.method == 'POST':
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_to_response('team-stats.html', {
'team_number': team_number,
})
forms.py:
class TeamStats(forms.ModelForm):
model = Team
fields = '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'
我希望我所寻求的帮助是有意义的。如果没有,我会尝试更好地解释它。谢谢
我注意到有几处错误,但导致问题的原因是如果方法不是 post,你永远不会设置 team_number,所以你不应该将其包含在上下文数据中
我还更改了您的视图以使用视图 class 而不是基于函数的视图,这将允许视图针对不允许的请求引发不允许的响应
from django.views.generic import View
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 })
要使用它,您必须更改 url、
的目标 url('your_url_regex', TeamStatsView.as_view(), name='should be here'),
我还更改了您的代码以使用 render
而不是 render_to_response
,因为后者不使用请求并且可能会被删除
The edited version is now throwing an error back "ModelForm has no model class specified."
那是因为需要在表单的元数据上设置模型
class TeamStats(forms.ModelForm):
class Meta:
model = Team
fields = ['team_number']