Данные из моей формы Django не добавляются в мою базу данных, потому что я не могу просмотреть их на веб-странице.

avatar
avidcoder1708
8 августа 2021 в 19:02
25
0
0

Я пытаюсь создать систему управления проектами и должен добавить клиента в свою базу данных. Для этого я создал форму, как показано ниже

forms.py

class AddClientForm(forms.Form):
    email = forms.EmailField(label="Email", max_length=50, widget=forms.EmailInput(attrs={"class":"form-control"}))
    password = forms.CharField(label="Password", max_length=50, widget=forms.PasswordInput(attrs={"class":"form-control"}))
    first_name = forms.CharField(label="First Name", max_length=50, widget=forms.TextInput(attrs={"class":"form-control"}))
    last_name = forms.CharField(label="Last Name", max_length=50, widget=forms.TextInput(attrs={"class":"form-control"}))
    username = forms.CharField(label="Username", max_length=50, widget=forms.TextInput(attrs={"class":"form-control"}))
    phone = forms.CharField(label="Phone", max_length=15, widget=forms.TextInput(attrs={"class":"form-control"}))
    

    #For Displaying Projects
    try:
        projects = Projects.objects.all()
        project_list = []
        for project in projects:
            single_project = (project.id, project.project_name)
            project_list.append(single_project)
    except:
        project_list = []
    
    #For Displaying Contracts
    try:
        contracts = Contracts.objects.all()
        contract_list = []
        for contract in contracts:
            single_contract = (contract.id, contract.contract_name)
            contract_list.append(single_contract)
            
    except:
        contract_list = []
    
    project_name = forms.ChoiceField(label="Project", choices=project_list, widget=forms.Select(attrs={"class":"form-control"}))
    contract_id = forms.ChoiceField(label="Contract", choices=contract_list, widget=forms.Select(attrs={"class":"form-control"}))
    location = forms.ChoiceField(label="Location", choices=States, widget=forms.Select(attrs={"class":"form-control"}))

Затем я создал следующие представления.py

def add_client(request):
    form = AddClientForm()
    context = {
        "form": form
    }
    return render(request, 'admintemplate/add_client_template.html', context)


def add_client_save(request):
    if request.method != "POST":
        messages.error(request, "Invalid Method")
        return redirect('add_client')
    else:
        
        form = AddClientForm(request.POST, request.FILES)

        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            username = form.cleaned_data['username']
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            phone = form.cleaned_data['phone']
            location = form.cleaned_data['location']
            project_id = form.cleaned_data['project_name']
            contract_id = form.cleaned_data['contract_id']

            try:
                user = CustomUser.objects.create_user(username=username, password=password, email=email, first_name=first_name, last_name=last_name, user_type=3)
                user.clients.location = location
                user.client.primaryphone = phone

                project_obj = Projects.objects.get(id=project_id)
                user.clients.project_id = project_obj

                contract_obj = Contracts.objects.get(id=contract_id)
                user.clients.contract_id = contract_obj

                user.clients.save()
                messages.success(request, "Client Added Successfully!")
                return redirect('add_client')
            except:
                messages.error(request, "Failed to Add Client!")
                return redirect('add_client')
        else:
            return redirect('add_client')

И мой файл models.py выглядит следующим образом

class Clients(models.Model):
    id = models.AutoField(primary_key=True)
    admin = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    primaryphone = models.CharField(max_length=15, unique=True)
    location = models.CharField(max_length=30, choices=States)
    project_id = models.ForeignKey(Projects, on_delete=models.DO_NOTHING, default=1)
    contract_id = models.ForeignKey(Contracts, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    objects = models.Manager()

Я не понимаю, почему данные не сохраняются в модели клиента. Будем признательны за любую помощь.

Источник
Brian Destura
8 августа 2021 в 23:50
0

Есть ли ошибки?

avidcoder1708
9 августа 2021 в 06:15
0

Нет ошибок нет. он просто не показывает добавленные данные на странице клиентов

Ответы (0)