情况如下: 对象:种族,赛车手,登记 我正在尝试使用一种表格为用户提供注册比赛的可能性。
型号:
class registration(models.Model):
STATUS = [
('Registered','Registered'),
('Confirmed','Confirmed'),
]
race_id = models.ForeignKey(Race, on_delete=models.CASCADE, related_name='rrace')
racer_id = models.ForeignKey(Racer, on_delete=models.CASCADE, related_name='rracer')
registration_date = models.DateTimeField(auto_now_add=True)
medals = models.BooleanField(default=False, help_text="do you wish it?")
registration_status = models.CharField(choices=STATUS, default='Registered', max_length=15)
表格:
class RegisterRace(forms.ModelForm):
class Meta:
model = registration
fields = ("race_id", "racer_id"")
url:
path('register-race/', views.race_register, name='race_register'),
观看次数:
def race_register(request):
if request.method == "POST":
c = request.POST.get('race') # this line is ONLY for debugging
race = Race.objects.get(pk=request.POST.get('race'))
form = RegisterRace(request.POST)
if form.is_valid():
form.save()
return redirect('races')
else:
form = RegisterRace()
return render(request, 'race_registration.html', {'form': form, 'rc': race})
race_detail模板包含以下链接:
<form action="/register-race/" method="POST">{% csrf_token %}
<input type="hidden" name="race" value="{{event.pk}}"> # where event is the current race
<input type="submit" value="REGISTRATION" class="btn btn-large btn-primary">
</form>
race_registration.html模板包含:
<form action="/register-race/" method="POST" enctype="multipart/form-data" class="form-horizontal">{% csrf_token %}
<input type = "hidden" name = "race_id" value="{{rc.pk}}"> # for debugging purpose here I have also tried with value="{{c}}"
<input type = "hidden" name = "racer_id" value="{{request.user.pk}}">
<button type="submit" class="btn btn-primary">REGISTER MYSELF</button>
</form>
当我按下“注册”按钮时,发生以下错误:
在/ register-race /处的DoesNotExist不存在种族匹配查询。 请求方法:POST请求URL:http://127.0.0.1:8000/register-race/ Django版本:3.0.2异常类型:DoesNotExist异常值:
种族匹配查询不存在。例外 位置:C:\ Users ----- \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ django \ db \ models \ query.py 在第415行
跟踪:
..race\views.py in register-race
race = Race.objects.get(pk=request.POST.get('race')) …
▼ Local vars
Variable Value
c None
request <WSGIRequest: POST '/register-race/'>
无论上面我在模版race_registration.html中放置了什么,
Register to race {{race.race_type}} which have the id {{race.pk}}
并且渲染符合预期-注册参加ID为19的INDIANAPOLIS 2020比赛
因此,我不明白错误在哪里以及为什么表格无法接收正确的值...
答案 0 :(得分:0)
我认为您真的一无所获。为什么要使用表格?
为什么不这样做:
urls.py
path('register-race/<race_id>', views.race_register, name='race_register'),
race_detail_template
<a href="{%url 'race_register' race_id=event.pk %}">Register me on this race</a>
视图
def race_register(request, race_id):
try:
race = Race.objects.get(pk=race_id)
race.rracers.add(your_racer_object)
except Race.DoesNotExist:
#deal with the problem
return redirect(wereveryouwant)