Проверьте элементы для флажка установленного в Джанго

Я работаю над представлением. Я пытаюсь создать HTML-файл, который будет отображать форму на основе модели записей. В HTML-файл я добавил код, который будет отображать всех участников группы. Рядом с каждым из участников есть флажок. В файле view.py я хочу просмотреть каждого из членов, и если флажок установлен, я хочу создать новый транзакционный объект и сохранить его в базе данных, если он проверен на наличие ошибок. Я получаю сообщение об ошибке, и это выглядит так...

ОШИБКА:

KeyError at /23/addRecord/
'omar'
Request Method: POST
Request URL:    http://127.0.0.1:8000/23/addRecord/
Django Version: 1.8.6
Exception Type: KeyError
Exception Value:    
'omar'
Exception Location: C:\Users\OmarJandali\Desktop\opentab\opentab\tab\views.py in addRecord, line 237
Python Executable:  C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\python.exe
Python Version: 3.6.1
Python Path:    
['C:\\Users\\OmarJandali\\Desktop\\opentab\\opentab',
 'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip',
 'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
 'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\lib',
 'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36',
 'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
Server time:    Mon, 3 Jul 2017 07:02:20 +0000
Traceback Switch to copy-and-paste view

C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py in get_response
                                response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
C:\Users\OmarJandali\Desktop\opentab\opentab\tab\views.py in addRecord
                            username = cd[member.user.username] ...
▶ Local vars
Request information

GET
No GET data
POST
Variable    Value
csrfmiddlewaretoken 
'vIg5KKWVNpoc2ijkwmBB9I28aDt7QOSA'
split   
'2'
omar    
'checked'
hani    
'checked'
submit  
'submit'

Вот файлы, которые у меня есть сейчас.

view.py

def addRecord(request, groupId):
    # for the records, the user and group need to be provided to know what group
    # this record is attached to and who created the record.
    user = User.objects.get(username='omar')
    group = Group.objects.get(id=groupId)
    members = Member.objects.filter(group=groupId)
    # the followin process is similar to the form validation for the group view.
    if request.method == 'POST':
        message = 'process'
        form = AddRecordForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            split = cd['split']
            new_record = Record.objects.create(
                split = split,
                status = 1,
                group = group,
                user = user,
            )
            for member in members:
            if member.user.username in request.GET:
                new_transaction = Transaction.objects.create(
                    amount = 0.00,
                    description = 'description',
                    group = group,
                    user = member,
                    record = new_record,
                )
        return redirect('accounts')
    else:
        # the only tyhing that needed to be passed was the group to display the naem
        # and the form that is going to be used and filled out by the user and submitted
        form = AddRecordForm()
        message = 'no processing'
        params = {
            'group':group,
            'members':members,
            'form':form,
            'message':message,
        }
    return render(request, 'tabs/add_record.html', params)

HTML-файл:

{% extends "base.html" %}

{% block content %}
  <h2>add record to {{ group.name }}</h2>
  {% if message %}
    <p>{{message}}</p>
  {% endif %}
  <form action="." method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    {% for member in members %}
      {{ member.user.username }}
      <input name="{{member.user.username}}" value="checked" type="checkbox"><br>
    {% endfor %}
    <input type="submit" name="submit" value="submit">
  </form>
{% endblock %}

файл models.py

class Record(models.Model):
    split = models.SmallIntegerField(default=1) #user
    count = models.IntegerField(default=1)
    status = models.SmallIntegerField(choices=RECORD_STATUS_CHOICES, default=1) #server
    group = models.ForeignKey(Group, default=1, on_delete=models.CASCADE) #server
    user = models.ForeignKey(User, default=1, on_delete=models.CASCADE) #server
    created = models.DateTimeField(auto_now_add=True) #server

class Transaction(models.Model):
    amount = models.DecimalField(decimal_places=2, max_digits=9,default=0.00)
    description = models.CharField(max_length=250)
    group = models.ForeignKey(Group, default=1, on_delete=models.CASCADE)
    user = models.ForeignKey(User, default=1, on_delete=models.CASCADE)
    record = models.ForeignKey(Record, default=1, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)

Я попытался сделать несколько разных вещей, включая изменение имени и значения ввода формы. Я попробовал несколько разных способов изменить содержимое cd[] и проверить, было ли оно там, где произошла ошибка. Может ли кто-нибудь помочь мне с этой сложной ситуацией.

1 ответ

Решение

Вы получите ошибку в запросе. ПОЛУЧИТЬ
Вместо этого,

    if member.user.username in request.POST:
Другие вопросы по тегам