如何将对象的pk传递给模板形式

问题描述 投票:0回答:1

情况如下:对象:种族,赛车手,登记我正在尝试使用一种表格为用户提供注册比赛的可能性。

型号:

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 /处的种族匹配查询不存在。 请求方法: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竞赛

因此,我不明白错误在哪里,以及为什么表格无法接收正确的值...

场景如下:对象:种族,赛车手,注册我正在尝试使用一种形式为用户提供注册比赛的可能性。模型:类注册(models.Model):状态= [...

python django forms parameter-passing primary-key
1个回答
0
投票

我认为您真的一无所获。为什么使用表格?

© www.soinside.com 2019 - 2024. All rights reserved.