django формирует почтовый запрос, выдающий ошибку по методу __init__ - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть форма django, которая берет параметр из представления для инициализации MultipleChoiceField на основе пользовательского экземпляра.

Форма работает нормально при загрузке шаблона. когда я отправляю форму, метод init в форме вызывает ошибку.

Моя модель models.py

from django.db import models

from django.contrib.auth.models import User

class Group(models.Model):
    group_name = models.CharField('Group name', max_length=50)

    def __str__(self):
        return self.group_name


class GroupMembers(models.Model):
    group_name = models.ManyToManyField(Group)
    members = models.ForeignKey(User, on_delete=models.CASCADE)


class Transactions(models.Model):

    bill_type = models.CharField('Bill type',max_length=200)
    added_by = models.ForeignKey(GroupMembers, on_delete=models.CASCADE)
    added_to = models.ForeignKey(Group, on_delete=models.CASCADE)
    purchase_date = models.DateField(auto_now=True)
    share_with = models.CharField('Share among',max_length=250)
    amount = models.IntegerField(default=0)

    def __str__(self):
        return self.bill_type

forms forms.py

from django import forms

from .models import Transactions, GroupMembers


class Bill_CreateForm(forms.ModelForm):
    def __init__(self, user_list, *args, **kwargs):   
        super(Bill_CreateForm, self).__init__(*args, **kwargs)
        self.fields['share_with'] = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,choices=tuple([(name, name.members) for name in user_list]))

    class Meta:
        model = Transactions
        fields = (
            'bill_type',
            'amount',
            'added_by',
            'added_to',
            'share_with',
        )

** РЕШЕНО МОЙ ВОПРОС С ПОМОЩЬЮ @Alasdair "

РЕДАКТИРОВАННОЕ РЕШЕНИЕ

views views.py

from django.shortcuts import render, redirect

from django.contrib.auth.models import User
from .models import Transactions, Group, GroupMembers
from .forms import Bill_CreateForm
from django.http import HttpResponse, HttpResponseRedirect

def add_bills_home(request, id=None):
    user = User.objects.get(pk=id) 
    grpname = Group.objects.filter(groupmembers__members=user)
    gm = GroupMembers.objects.filter(group_name__group_name=grpname[0])       
    users_list = [i for i in gm]

    if request.method == 'POST':       
        form = Bill_CreateForm(users_list, request.POST)
        if form.is_valid():
            print(form.cleaned_data['share_with'])
            form.save()

            form = Bill_CreateForm(users_list) 

            return render(request, 'bills/create_bill.html', {'form':form})
    else:
        form = Bill_CreateForm(users_list)   
    return render(request, 'bills/create_bill.html', {'form':form})

Ошибка

enter image description here

После отправки форма с данными метод request.POST, возвращающий данные ниже

enter image description here

Я не знаю, если метод request.POST повторно инициализирует форму с помощью заполните данные и передайте их методу init в форме.

Пожалуйста, помогите мне с этим

...