【问题标题】:How to change the value of model field when button is clicked in django?在 django 中单击按钮时如何更改模型字段的值?
【发布时间】:2019-12-15 00:15:27
【问题描述】:

我正在制作一个 django 应用程序,其中主页显示不同公司的实习机会列表。usertype=Student 的用户可以查看这些实习机会。单击应用时,每个实习列表视图都有一个名为“应用”的按钮 我希望将我的 django 模型(StudentApplying)中名为 applied 的布尔字段设置为 true。这样创建此帖子的公司可以查看申请的学生列表,然后可以接受/拒绝他们。我不想使用 ajax、javascript 等,除非我无法用 django 本身来做到这一点。

models.py

from django.db import models
from InternsOnboardMain.models import internshipPost
from django.contrib.auth.models import User

class StudentApplying(models.Model):
    companyName = 
models.ForeignKey(internshipPost,on_delete=models.CASCADE)
    studentName = models.ForeignKey(User,on_delete=models.CASCADE)
    applied = models.BooleanField(default=False)

view.py我已经尝试过了,但它不起作用

from django.shortcuts import render, redirect,get_object_or_404
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .models import StudentApplying
from django.contrib.auth.models import User
from django.db.models import F

def applyStatus(request):
    if request.GET.get('applybtn'):
        profil = get_object_or_404(StudentApplying, 
        created_by=request.user)
        profil.applied = True
        profil.save(update_fields=["applied"])
        return redirect('InternsOnboard-Home')
    return HttpResponse('Not done')

我没有使用任何forms.py

html 文件

<form method="POST" action="{% url 'Student-Apply' %}">
{% csrf_token %}
<button class="btn btn-info" name="applybtn">Apply</button>
</form>

没有必要有标签

【问题讨论】:

  • 嗨@Kiran,我目前没有太多时间进行全面检查,但在您的代码中,这行首先看起来是错误的:if request.GET.get('applybtn'): - 因为您提交时请求是 POST一个表格,所以你应该使用:if request.POST.get('applybtn'):
  • @Zollie 感谢您如此迅速地回复,但即使更改为 POST 也无法正常工作。无论哪种方式,它都会返回“未完成”。

标签: django python-3.x django-models django-templates django-views


【解决方案1】:

再检查一下,问题看起来像是您尝试提交一个空表单。因此,您应该尝试执行以下操作:

在视图中:

if “applybtn” in request.POST:
    # do this and that

按钮的名称将在请求中,因此它应该可以工作。

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 2018-10-08
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多