0
0

I created an app with Django【Employee management】

Last updated at Posted at 2024-02-07

Create a project

django-admin startproject project2
python3 manage.py startapp employee
python3 manage.py migrate
python3 manage.py createsuperuser

Edit to suit your project

① Edit settings.py

settings.py
//省略
INSTALLED_APPS = [
    "employee.apps.EmployeeConfig",

//省略
LANGUAGE_CODE = "ja"

TIME_ZONE = "Asia/Tokyo"

② Edit urls.py

urls.py
//省略
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path('', include( 'employee.urls')),
]

③ Create urls.py in migrations file

migrations/urls.py
from django.urls import path
from .import views

app_name='employee'

urlpatterns=[
    path('', views.IndexView.as_view(),name='index')
]

④ Edit views.py

views.py
from django.views import generic

class IndexView(generic.TemplateView):
    template_name='employee/employee_list.html'

⑤ Create a template/employee folder in the employee folder and create base.html and employee_list.html

base.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>社員管理システム</title>
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
      crossorigin="anonymous"
    />
  </head>
  <body>
    <div class="container">{% block content %} {% endblock %}</div>
    <script
      src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
      integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
      crossorigin="anonymous"
    ></script>
  </body>
</html>
employee_list.html
{% extends 'employee/base.html' %} {% block content %}トップページ{% endblock %}
python3 manage.py runserver

Create models.py

① edit models.py

models.py
from django.db import models
from django.utils import timezone

class Department(models.Model):
    name = models.CharField('部署名', max_length=20)
    created_at = models.DateTimeField('日付', default=timezone.now)

    def __str__(self):
        return self.name
    
class Employee(models.Model):
    first_name = models.CharField('', max_length=20)
    last_name = models.CharField('', max_length=20)
    email = models.EmailField('メールアドレス', blank=True)
    department = models.ForeignKey(
        Department, verbose_name='部署', on_delete=models.PROJECT,
    )

    created_at = models.DateTimeField('日付', default=timezone.now)

    def __str__(self):
        return '{0} {1} {2}'.format(self.last_name, self.first_name, self.department)

② edit admin.py

admin.py
from django.contrib import admin
from .models import Deparment, Employee

admin.site.register(Deparment)
admin.site.register(Employee)

③ Go to Projects2 and migrate

cd Projects2
python3 manage.py migrate
python3 manage.py runserver

④ Edit employee/views.py

employee/views.py
rom django.views import generic
from .models import Employee

class IndexView(generic.ListView):
    model=Employee

⑤ Edit employee_list.html

employee_list.html
{% extends 'employee/base.html' %} {% block content %}
<table class="table table-bordered mt-4">
  <caption>
    従業員リスト
  </caption>
  <thead>
    <tr>
      <th>ID</th>
      <th></th>
      <th></th>
      <th>メール</th>
      <th>部署</th>
    </tr>
  </thead>
  <tbody>
    {% for employee in employee_list %}
    <tr>
      <td>{{employee.pk}}</td>
      <td>{{employee.last_name}}</td>
      <td>{{employee.first_name}}</td>
      <td>{{employee.email}}<</td>
      <td>{{employee.department}}<</td>
    </tr>
    {% endfor %}
  </tbody>
</table>
{% endblock %}

Add more models.py

① Add more models.py

models.py
from django.db import models
from django.utils import timezone

class Department(models.Model):
    name = models.CharField('部署名', max_length=20)
    created_at = models.DateTimeField('日付', default=timezone.now)

    def __str__(self):
        return self.name

class Club(models.Model):
    name = models.CharField('部活名', max_length=20)
    created_at = models.DateTimeField('日付', default=timezone.now)

    def __str__(self):
        return self.name


    
class Employee(models.Model):
    first_name = models.CharField('', max_length=20)
    last_name = models.CharField('', max_length=20)
    email = models.EmailField('メールアドレス', blank=True)
    department = models.ForeignKey(
        Department, verbose_name='部署', on_delete=models.PROJECT,
    )
    club = models.ManyToManyField(
        Club, verbose_name='部活',
    )

    created_at = models.DateTimeField('日付', default=timezone.now)
    address=models.CharField('住所',max_length=20, blank=True)

    def __str__(self):
        return '{0} {1} {2}'.format(self.last_name, self.first_name, self.department)
python3 manage.py makemigrations employee
python3 manage.py migrate

② Add more admin.py

admin.py
from django.contrib import admin
from .models import Deparment, Employee, Club

admin.site.register(Deparment)
admin.site.register(Employee)
admin.site.register(Club)

Create a search form

① Create employee/forms.py

employee/forms.py

② Edit view.py

view.py


Reference site

Djangoで社員管理アプリを作ろう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0