【问题标题】:Multiple button in Django: Accept and RejectDjango中的多个按钮:接受和拒绝
【发布时间】:2019-04-27 07:37:24
【问题描述】:

我是 Django 新手。我正在做一个项目,我想要接受和拒绝按钮,每当客户点击相应的按钮时,该对象就会进入接受或拒绝模板。我不知道我该怎么做。

这是我的 .html 文件,它显示所有对象并有一个接受和拒绝按钮:

<div class="body table-responsive">
                        <form id="form" method="POST" action = "{% url 'admin_team_detail' %}">
                                    {% csrf_token %}
                            <table class="table table-hover">
                                <thead>
                                    <tr>
                                        <th>S No.</th>
                                        <th>COMPANY NAME</th>
                                        <th>TEAM MEMBER</th>
                                        <th>EMAIL</th>
                                        <th>STATUS</th>
                                        <th><center>#</center></th>
                                    </tr>
                                </thead>
                                <tbody>

                                        {%for team in object%}
                                    <tr>

                                        <th scope="row"> {{ forloop.counter }}</th>
                                        <td>{{team.company_name}}</td>
                                        <td>{{team.team_member}}</td>
                                        <td>{{team.email}}</td>
                                        <td>-</td>
                                        <td><center><input type="submit" value="accept" name="accept">
                                            <input type="submit" value="reject" name="reject"></center></td> 
                                    </tr>

                                    {% endfor %}

                                </tbody>
                            </table>
                        </form>

这里是views.py:

def admin_team_detail(request):
obj= Create_Team.objects.all()
print(request.method)
if request.method == 'POST':
    if 'reject' in request.POST :
        Create_Team.status = 'reject'
    else:
        Create_Team.status = 'accept'
        Create_Team.save()
return render(request, "admin/team-details.html", {"object": obj})

这是从数据库中渲染所有对象并显示在网站上。

我知道我必须为接受和拒绝制作两个模板,但我不知道如何处理具有接受或拒绝响应的对象。

而且我还希望,如果客户端单击按钮,那么该响应将保存在数据库中。

我也想知道是否必须在我的model.py中添加一个字段来表示状态。

【问题讨论】:

    标签: python html django django-models django-views


    【解决方案1】:

    首先,您的两个按钮应将所需的值发送到您的 views.py 和一个隐藏输入以传递团队 ID

    <input type="submit" value="reject" name="status">
    <input type="submit" value="accept" name="status">
    <input type="hidden" name="id" value={{ team.id }}>
    

    接下来,在你的views.py

    def admin_team_detail(request):
        if request.method == 'POST':
        # First, you should retrieve the team instance you want to update
            team = Create_Team.objects.get(id=request.POST('id'))
    
            # Next, you update the status
            if request.POST.get('status'):
                team.status = request.POST.get('status')
                team.save()
    

    注意:此示例假设您的团队模型有一个状态字段以存储拒绝/接受值。

    class Team(models.Model):
        # You existing fields...
        status = models.CharField(max_length=30)
    

    【讨论】:

    • 好的,所以我必须在我的模型中添加一个状态字段,但我有一个问题我如何添加意味着:状态 {'accept' = 'accept', 'reject' = 'reject' }或 status = model.textfield 这是正确的。
    • 查看有关 models 的文档以了解模型的工作原理。考虑到这一点,我已经编辑了我的答案。
    • 我已经编辑了我的视图,但它包含一个错误提示:“save() 缺少 1 个必需的位置参数:'self'”
    • 在你的views.py中Create_Team没有提到任何东西。正如我最初的 sn-p 中提到的:首先,您应该检索要更新的团队实例
    • 它在数据库中做了一些不同的事情,它在数据库中创建了一个默认对象,它只包含填充的状态字段,所有其他字段都是空白的......
    【解决方案2】:

    首先,您需要为模板内的每个对象创建一个表单。

    {%for team in object%}
      <form method="POST">
          {%csrf_token%}
        <input type="hidden" name="team_id" value={{ team.id }}>
        <input type="submit" value="reject" name="status">
        <input type="submit" value="accept" name="status">
      </form>
    {% endfor %}
    

    现在在 View.py 中,您需要执行以下操作:

    def admin_team_detail(request):
    
    if request.method == 'POST':
        # I am assuming Create_Team is your model where all team's are present.
        team = Create_Team.objects.get(id=request.POST.get("team_id"))
            team.status = request.POST.get("status")
            team.save()
    

    【讨论】:

    • 老兄,你能解释一下这里的team_id是什么吗?
    • 你可以看到我现在已经编辑了我的模板你能告诉我我缺少什么
    • @pavan kumar 它没有更新我数据库中的状态
    • @pavan kumar 你可以看到你在赛道上的不足之处,但我只接受了对我有用的答案的一半。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2017-07-04
    相关资源
    最近更新 更多