Djangoベース-モデルを作成し、Adminを設定します.


🌈 モデルを作成してAdmin Siteを設定する


🔥 モデルの作成


🔥 Admin設定


1.モデルの作成


1) makemigrations & migrate

  • モデルは、データベースに格納されているテーブルおよびフィールドを指定するために使用されます.
  • DjangoのORMテクノロジーは、SQL構文を知らずにデータベースを制御できるPython構文を提供します.
  • 以下に示すように、
  • 投稿のタイトル、推奨数、クリック数、コンテンツフィールドを作成できます.
  • from django.db import models
    # Create your models here.
    class Notice(models.Model):
        title = models.CharField(max_length=100)
        likeCount = models.IntegerField()
        viewCount = models.IntegerField()
        contents = models.TextField()
  • モデルでフィールドが指定されている場合は、データベースを反映する2つのコマンドが必要です.
    1) 🔍 python manage.py makemigrations
    2) 🔍 python manage.py migrate
  • models.pyのClassでDBにモデルを作成するコマンドは1番、作成したモデルをDBに適用するコマンドは2番です.
  • 端末で
  • 1コマンドを実行すると、migrationsディレクトリにファイルが表示され、「id」フィールドが追加され、処理したばかりのフィールドも追加されます.
  • フィールド「id」は、pkという変数を使用してモデル内でオブジェクトを検索し、データベースにデータを追加するときにそのデータにシーケンスインデックス番号を指定するために使用されます.
  • # Generated by Django 3.2 on 2021-04-15 06:06
    from django.db import migrations, models
    class Migration(migrations.Migration):
        initial = True
        dependencies = [
        ]
        operations = [
            migrations.CreateModel(
                name='Notice',
                fields=[
                    ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                    ('title', models.CharField(max_length=100)),
                    ('likeCount', models.IntegerField()),
                    ('viewCount', models.IntegerField()),
                    ('contents', models.TextField()),
                ],
            ),
        ]

    2.Admin設定


    1) admin.site.register()

  • モデルをDBにマッピングすると、adminにモデルがマッピングされます.上に作成したモデルを表示するには、pyで登録する必要があります.
  • Admin Siteにモデルを登録する方法は、モデルからクラスをインポートし、adminします.site.register()を通過できます.
  • from django.contrib import admin
    from .models import Notice # 👈 models.py에서 Notice를 가져옴  
    # Register your models here.
    admin.site.register(Notice) # 👈 Notice 클래스를 admin에 등록

    2) verbose_name & verbose_name_plural

  • に登録されているモデルはNoticeです.Djangoがsを追加するため、マルチタイプのNoticeであることがわかります.表示クラスの名前を変更する場合は、verbose nameまたはverbose name pluralで値を指定できます.
  • もちろん、モデルに変更があるのでmakemigrationとmigrateを実行する必要があります!
  • from django.db import models
    # Create your models here.
    class Notice(models.Model):
        title = models.CharField(max_length=100, verbose_name='제목')
        likeCount = models.IntegerField(verbose_name='추천수')
        viewCount = models.IntegerField(verbose_name='조회수')
        contents = models.TextField(verbose_name='내용')
        class Meta:
            db_table = 'main_board'
            verbose_name = '게시글' 
            verbose_name_plural = '게시글' 

    3)strメソッド

  • DBにデータを挿入する方法は、管理者権限による作成(admin site)、一括作成(シード)、shellでの作成に大きく分けられます.
  • Admin SiteでADDボタンで6つのテストデータを生成すると、投稿のタイトルがクラス名で表示されます:)
  • を明確に区別するためには、各投稿のタイトルが表示されることが望ましい.この場合、__str__メソッドによって各オブジェクトの名前を返すことができる.
  • from django.db import models
    # Create your models here.
    class Notice(models.Model):
        title = models.CharField(max_length=100, verbose_name='제목')
        likeCount = models.IntegerField(verbose_name='추천수')
        viewCount = models.IntegerField(verbose_name='조회수')
        contents = models.TextField(verbose_name='내용')
        def __str__(self):  # admin에서 표시될 user 필드 정보 설정
            return self.title
        class Meta:
            db_table = 'main_board'
            verbose_name = '게시글' 
            verbose_name_plural = '게시글' 

    4) list_display & list_display_links


    adminサイトを介して
  • 以上のフィールド値を公開する場合、admin.pyでリストディスプレイを使用してフィールド値を指定できます.
  • では、生成されたデータにアクセスできるタイトルへのリンクのみが表示されます.リンク機能を他のフィールド値に適用する場合は、list display linksのフィールド値を指定できます.
  • from django.contrib import admin
    from .models import Notice
    # Register your models here.
    @admin.register(Notice) 
    class NoticeAdmin(admin.ModelAdmin):
        list_display = ['title', 'likeCount', 'viewCount']
        list_display_links = ['title', 'likeCount', 'viewCount']