Несколько кнопок в Django: принять и отклонить - PullRequest
0 голосов
/ 27 апреля 2019

Я новичок в Джанго.Я работаю над проектом, в котором я хочу кнопку «принять» и «отклонить», и всякий раз, когда клиент нажимает соответствующую кнопку, этот объект попадает в шаблон «принять или отклонить».Я понятия не имею, как я могу это сделать.

Это мой файл .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 для статуса.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Сначала вам нужно создать форму для каждого объекта внутри шаблона.

{%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()
0 голосов
/ 27 апреля 2019

Сначала ваши две кнопки должны отправить желаемое значение на ваш views.py и один скрытый ввод, чтобы передать идентификатор команды

<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)
...