У меня проблема с обновлением 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)