如何从djang中纯html的select选项值返回int

2024-06-28 11:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个普通的html表单,其中包含一个select选项,select选项的值应该返回一个int来存储在数据库中。在

我尝试过将视图中的值转换为int,但仍然不起作用。在

这就是Scruygoals的模特

class ScrummyGoals(models.Model):
    user_name = models.ForeignKey(ScrummyUser, on_delete=models.CASCADE)
    #goal_status = models.ForeignKey(GoalStatus, on_delete=models.CASCADE)
    task = models.CharField(max_length=200)
    #task_target = models.CharField(max_length=30)
    target_name = models.ForeignKey(GoalStatus, on_delete=models.CASCADE, default=1, related_name="scrummygoals")



    def __str__(self):
        return self.task

这是我填充select选项的模型。在

^{pr2}$

这是html表单

<form action="" method="post">
     {% csrf_token %}
  <div class="form-group">
    <label for="task">Task</label>
    <input type="text" class="form-control" id="task" name="task">
  </div>
     <div class="form-group">
    <label for="task">Goal</label>
         <select name="goal" class="form-control">
             {% for goal in goal %}
             <option value='{{goal.id | to_int }}'>{{goal.target}}</option>
             {% endfor %}
         </select>

  </div>
  <button type="submit" class="btn btn-primary">Create task</button>
</form>

这是我正在获取post请求并保存到数据库中的视图。在

def user_add_task(request):
    goal = GoalStatus.objects.all()
    if request.method == 'POST':
        if request.POST.get('task') and request.POST.get('goal'):
            task = ScrummyGoals()
            task.target_name = int(request.POST.get('goal'))
            task.user_name = request.user.scrummyuser.id
            task.task = request.POST.get('task')
            task.save()
            return redirect('myapp:home')
    return render(request, 'myapp/user_add_task.html', {'goal':goal})

我希望select选项的值是int,例如1,而不是字符串,例如“1”。 所以我得到了这个错误: 异常类型:ValueError 异常值:

无法分配“1”:ScrummyGoals.target_名称“”必须是“GoalStatus”实例。在


Tags: namedivformtargettaskmodelsrequest选项
1条回答
网友
1楼 · 发布于 2024-06-28 11:22:53

试着换衣服

task.target_name = int(request.POST.get('goal'))
task.user_name = request.user.scrummyuser.id

^{pr2}$

或者

task.target_name = GoalStatus.objects.get(pk=request.POST.get('goal'), )
task.user_name = request.user.scrummyuser

我建议重命名这两个FK字段:remove_namepostfix。这些不是“名称”—它们是指向其他模型实例的链接。所以第一个指向target通过target_id值,第二个指向通过user_id值的user,应该相应地命名。在

相关问题 更多 >