在django中单击按钮时,如何更改模型字段的值?

时间:2019-08-07 11:09:36

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

我正在制作一个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')

我没有使用任何表格。py

html文件

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

没有标签

1 个答案:

答案 0 :(得分:1)

再检查一下,问题似乎是您尝试提交一个空表格。因此,您应该尝试执行以下操作:

在视图中:

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

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