У меня проблема с обновлением django в crud?

У меня проблема, когда в части обновления при отображении формы, в каких бы полях не было больше одного слова (например, имя, адрес), в редактируемой форме отображается только первое, остальные пропадают. Я просмотрел весь проект несколько раз, но не могу найти решение. Пожалуйста, помогите мне. Заранее спасибо!!!

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
</head>
<body>
    <div class="container" align="center">
        {% block body %}
        {% endblock %}
    </div>
</body>
</html>

create.html

<!DOCTYPE html>
{% extends "testAppTem/base.html" %}

{% block body %}
    <div class="jumbotron">
        <h1>Employee insertion form</h1><hr>
        <form method='post'>
            <table border=3>
                {{form}}
            </table>
            {%csrf_token%}<br><br>
            <input type="submit" value="Insert" class="btn btn-lg btn-danger">
        </form>
    </div>
{% endblock %}

index.html

<!DOCTYPE html>
{% extends "testAppTem/base.html" %}

{% block body %}
    <div class="jumbotron">
        <h1><u>Employee Information Dashboard</u></h1><br><br>
            <table border=4>
        <thead>
            <th>Employee Name</th>
            <th>Employee Number</th>
            <th>Employee Salary</th>
            <th>Employee Address</th>
            <th>Actions</th>
        </thead>
        {% if employees %}
            {% for e in employees %}
                <tr align=center>
                    <td>{{e.enum}}</td>
                    <td>{{e.ename}}</td>
                    <td>{{e.esal}}</td>
                    <td>{{e.eaddr}}</td>
                    <td><a href="/update/{{e.id}}" class="btn btn-sm btn-dark">Update</a> <a href="/delete/{{e.id}}" class="btn btn-sm btn-info">Delete</a></td>
                </tr>
            {% endfor %}
        {% else %}
                <p>There is no data...</p>
        {% endif %}
            </table><br><br>
            <a href="/insertEmployee" class="btn btn-lg btn-success">Insert New Employee</a>
    </div>
            {% endblock %} 

update.html

<!DOCTYPE html>
{% extends "testAppTem/base.html" %}

{% block body %}
    <div class="jumbotron">
        <h1>Employee information update form</h1><hr>
        <form method='post'>
            {%csrf_token%}
            Employee Number: <input type="number" name="enum" value={{employee.enum}}><br><br>
            Employee Name: <input type="text" name="ename" value={{employee.ename}}><br><br>
            Employee Salary: <input type="number" name="esal" value={{employee.esal}}><br><br>
            Employee Address: <input type="text" name="eaddr" value={{employee.eaddr}}><br><br><br>
            <input type="submit" value="Update Record" class="btn btn-lg btn-warning">
        </form>
    </div>
{% endblock %}

populate.py

import os 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'crudFunctionBasedViewsProject.settings')
import django
django.setup()

from testApp.models import *
from faker import Faker
from random import * 
fake = Faker()

def populate(n):
    for i in range(n):
        fnum= randint(1,1000)
        fename = fake.name()
        fesal = randint(10000,500000)
        feaddr = fake.city()
        emp_record = Employee.objects.get_or_create(enum=fnum, ename=fename, esal=fesal, eaddr=feaddr)
        
populate(20)

Views.py

from django.shortcuts import render, redirect
from testApp.models import Employee
from testApp.forms import EmployeeForm

# Create your views here.


def retrieve_view(request):
    employees = Employee.objects.all()
    return render(request, 'testAppTem/index.html', {'employees': employees})


def create_view(request):
    form = EmployeeForm()
    if request.method == 'POST':
        form = EmployeeForm(request.POST)
        if form.is_valid():
            form.save()
        return redirect("/")
    return render(request, 'testAppTem/create.html', {'form': form})

def delete_view(request,id):
    employee = Employee.objects.get(id=id)
    employee.delete()
    return redirect("/")

def update_view(request,id):
    employee = Employee.objects.get(id=id)
    # test = Employee.objects.get(id=15)
    # print(test.eaddr)
    if request.method == 'POST':
        form = EmployeeForm(request.POST, instance=employee)
        if form.is_valid():
            form.save(commit=True)
            return redirect('/')
    return render(request, 'testAppTem/update.html', {'employee': employee})
            

models.py

from django.db import models

# Create your models here.
class Employee(models.Model):
    enum = models.IntegerField()
    ename = models.CharField(max_length=64)
    esal = models.FloatField()
    eaddr = models.CharField(max_length=256)

forms.py

from django import forms
from testApp.models import Employee

class EmployeeForm(forms.ModelForm):
    class Meta:
        model=Employee
        fields='__all__'

settings.py

urls.py

"""crudFunctionBasedViewsProject URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, re_path
from testApp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.retrieve_view),
    path('insertEmployee/', views.create_view),
    path('delete/<int:id>/', views.delete_view),
    re_path('update/(?P<id>\d+)/$', views.update_view),
]

admin.py

from django.contrib import admin
from testApp.models import Employee

class EmployeeAdmin(admin.ModelAdmin):
    list_display = ["ename", "enum"]


# Register your models here.
admin.site.register(Employee, EmployeeAdmin)
Вернуться на верх