[댕고] 데이 4 - 모형.

Django 모형
하나.설계 시스템 테이블
MVT 모델에서 모델도 데이터 저장의 형식을 가리키며 이전에 View는 보기 모듈이었다.
Django의 Model 모듈에서 데이터 클래스를 구성하여 데이터 관리
1. 데이터 모델 추가
Model 파일에 다음 코드를 입력합니다.
#    
class Event(models.Model):
    name = models.CharField(max_length=100) #    
    limit = models.IntegerField()  #     
    status = models.BooleanField()  #   
    address = models.CharField(max_length=200)  #   
    start_time = models.DateTimeField('events time')  #     
    create_time = models.DateTimeField(auto_now=True)  #     (        )


    def __str__(self):
        return self.name

#    
class Guest(models.Model):
     event = models.ForeignKey(Event,on_delete=models.CASCADE,default=1) #      id
    realname = models.CharField(max_length=64) #   
    phone = models.CharField(max_length=16) #    
    email = models.EmailField() #   
    sign = models.BooleanField() #     
    create_time = models.DateTimeField(auto_now=True) #     (        )

    class Meta:
        unique_together = ("event", "phone")

    def __str__(self):
        return self.realname


데이터에 자증된 id가 있기 때문에 디자인할 때 이 필드가 필요 없고 게스트는 관련 대응이 필요합니다.
str () 방법은 파이톤이 대상을 str로 표시하는 방법을 알려 줍니다.따라서 각 모델 클래스에 추가str__() 방법입니다.
2. 데이터 마이그레이션 수행
새 데이터 클래스를 만듭니다. 블로그는 여기 제 응용 프로그램 이름입니다.
python manage.py makemigrations blog

Migrations for 'blog':
  blog\migrations\0002_event_guest.py
    - Create model Event
    - Create model Guest

그다음에 데이터 응용.
python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying blog.0002_event_guest... OK


이전 이벤트 데이터가 기본값이 없어서 데이터베이스 구축에 실패한 것을 발견했기 때문에default 값을 추가했습니다
둘.admin 백그라운드 관리
1. 가입 사용자 클래스와 활동 클래스
관리자 파일을 수정하고 생성된 데이터 클래스를 추가합니다
'''Event'''
from  blog.models import Event,Guest

admin.site.register(Event)
admin.site.register(Guest)

admin 백스테이지에서도 대응하는 클래스를 볼 수 있어요.
2. 클래스에 추가 필드 표시
새 데이터를 만든 후에, 우리는 페이지에 더 많은 데이터를 보여줄 수 있어야 한다. 여기에서admin 데이터를 계속 수정한다
'''Event'''
from  blog.models import Event,Guest

class EventAdmin(admin.ModelAdmin):
    list_display = ('name', 'status', 'start_time','id')

class GuestAdmin(admin.ModelAdmin):
    list_display = ('realname', 'phone','email','sign','create_time','event')

admin.site.register(Event,EventAdmin)
admin.site.register(Guest,GuestAdmin)

새 EventAdmin 클래스, 계승django.contrib.admin.ModelAdmin 클래스, Admin 관리 도구에 사용할 클래스의 사용자 정의 설정을 저장합니다.여기 사용자 정의 하나만:listdisplay, 목록에 표시할 필드를 정의하는 필드 이름의 그룹입니다.
3. 검색 및 필터링 기능 추가
Admin 관리 시스템은 자체적으로 검색 및 필터링 기능을 갖추고 있습니다.
class EventAdmin(admin.ModelAdmin):
    list_display = ['name', 'status', 'start_time','id']
    search_fields = ['name']#   
    list_filter = ['status']#   

class GuestAdmin(admin.ModelAdmin):
    list_display = ['realname', 'phone','email','sign','create_time','event']
    search_fields = ['realname','phone']#   
    list_filter = ['sign']#   

검색이 추가되었음을 보실 수 있습니다fields,list_filter 필드, 이것은 서로 다른 데이터에 따라 우리가 무엇을 근거로 필터해야 하는지를 확정합니다
셋.기본 데이터 액세스
1. Django의 셸 모드로 들어가기
Django에서 데이터베이스를 조작하려면 셸 스크립트를 켜서 데이터베이스에 대한 조작을 해야 합니다
python manage.py shell

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:16) [MSC v.1915 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

예를 들어 Blog 응용 프로그램의 모델을 가져옵니다.py의 이벤트 테이블 및 게스트 테이블,테이블(Event, Gues 테이블)의 모든 객체를 가져옵니다.
>>> from blog.models import Event,Guest
>>> Event.objects.all()
, ]>
>>> Guest.objects.all()
]>


2.shell 데이터 삽입
  • 생성 +save 방법 사용
  • >>> from datetime import datetime
    >>> e1 = Event(id=2,name='  Pro    ',limit=2000,status=True,address='     ',start_time=datetime(2016,8,10,14,0,0))
    >>> e1.save()
    C:\Python37\lib\site-packages\django-2.2.4-py3.7.egg\django\db\models\fields\__init__.py:1421: RuntimeWarning: DateTimeField Event.st
    art_time received a naive datetime (2016-08-10 14:00:00) while time zone support is active.
      RuntimeWarning)
    
  • create 방법 사용
  • >>> Event.objects.create(id=3,name='  MAX    ',limit=2000,status=True,address='BJ    ',start_time=datetime(2016,9,22,14,0,0))
    

    여기에 추가된 사건은 스스로 증가한 것이다
    3.shell 쿼리 데이터
  • 정확한 조회table.objects.get () 방법은 데이터베이스 테이블에서 일치하는 결과를 얻어서 대상을 되돌려줍니다. 기록이 존재하지 않으면 DoesNotExist 형식의 오류를 보고합니다.
  • >>> e2 = Event.objects.get(name='  MAX    ')
    >>> e2
    
    >>> e2.address
    'BJ    '
    
  • 모호 일치table.objects.filter () 방법은 데이터베이스에서 일치하는 결과를 얻어 대상 목록을 되돌려줍니다. 기록이 존재하지 않으면 [] 을 되돌려줍니다.
  • >>> e3 = Event.objects.filter(name__contains='   ')
    >>> e3
    , , ]>
    
    

    name과contains 사이에 이중 밑줄을 그으십시오.여기서 컨테이너 부분은 Django에서 LIKE 문구로 번역됩니다.
  • get 조회
  • >>> g1 = Guest.objects.get(realname='Andy')
    >>> g1
    
    

    4.shell 데이터 삭제
    질의의 데이터 삭제
    >>> g2 = Guest.objects.get(realname='Mark')
    >>> g2
    
    >>> g2.delete()
    (1, {'blog.Guest': 1})
    
    

    이게 완전히 삭제되지 않은 것 같아요. 셸을 통해서.
    5. 데이터 업데이트
    데이터를 직접 업데이트하면 됩니다. 마지막으로 저장한 데이터를 기억하세요.
    >>> from blog.models import Event,Guest
    >>> g1 = Guest.objects.get(realname = 'Andy')
    >>> g1
    
    >>> g1.realname = 'Allen'
    >>> g1
    
    >>>g1.save()
    
    

    넷.MySQL 구성
    로컬 Mysql을 설치한 다음 Django를 Mysql에 연결한 다음 발표회에서 사용해야 합니다
    1. Mysql 설치
    이곳은 스스로 채소 새의 링크를 볼 수 있다https://www.runoob.com/mysql/mysql-install.html
  • mysql
  • 시작
    다음 명령을 입력합니다.
    net start mysql
    
  • 비밀번호
  • root@localhost root
    
  • 프로젝트에 사용할 Guest 라이브러리 만들기
  • CREATE DATABASE guest CHARACTER SET utf8;
    

    2. PyMySQL 설치
    pip install PyMySQL
    

    3. Django 링크 MySQL 구성
  • Navicate 링크를 사용하여 다음 기사를 확인합니다.https://blog.csdn.net/qq_22211217/article/details/80415248

  • 4. Django 데이터 마이그레이션
  • setting에서 데이터베이스 설정을
  • 로 수정
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': 'guest',
            'USER': 'root',
            'PASSWORD': 'root',
            'OPTIONS': {
                'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            },     
        }
    }
    
  • 데이터 마이그레이션
  • python manage.py makemigrations
    python manage.py migrate
    

    옮길 때 몇 개의 구덩이를 만났다
      :django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
    
        :  Python      Python36-32\Lib\site-packages\django\db\backends\mysql\base.py  
    
               
    if version < (1, 3, 3):
        raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
        
        :AttributeError: 'str' object has no attribute 'decode'
    
        :  C:\Python37\lib\site-packages\django-2.2.4-py3.7.egg\django\db\backends\mysql\operations.py"  
    
           
    if query is not None:
         query = query.decode(errors='replace') :
    
    
  • 재구성 관리자 계정은 데이터베이스를 이전했기 때문에 슈퍼관리자 계정도 재구성해야 한다
  • python manage.py createsuperuser
    

    좋은 웹페이지 즐겨찾기