Django Model保存前にログのインスタンスを記録します。


DjangoではどのようにModelを保存する前に一定の固定操作をしますか?
キーワード:信号
DjangoのModelを利用したSignal Displatchは、django.db.models.signals.pre_を通じてメソッドは、イベントが発生する前に、
発射する
トリガ信号は、すべてスケジュールされているreceiver方法によって深蔵された功と名前が保存されています。
信号の処理は一般的にModelに書いてあります。例を挙げます。

import logging
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
 
class Order(models.Model):
  # ...
 
logger = logging.getLogger(__name__)
 
@receiver(pre_save, sender=Order)
def pre_save_handler(sender, **kwargs):
  
  #      Order  Model         :)
  logger.debug("{}".format(sender, **kwargs))
  print 'fuck universe'
このようにして問題の中の要求を実現するべきで、似たような方法はpre_などがあります。initはModelインスタンスの前にトリガされます。initは実例の後にトリガします。同じ理由はpre_です。saveとpost_セーブしました。
補足知識:Django models.save()の問題
Django views.pyはmodels.pyを引用してmodles.objects.createを行います。
直接保存はできません。データベースに提出します。
EX:
私たちはここでポストを通じて情報を得てから。
view.py

  def post(self, request, ab=None, all_seat=None):

    #       
    date = request.POST.get('date')
    time = request.POST.get('time')
そして
view.py

seatform = SeatForm(request.POST)
          #       
          #   is_valid() Django   ,      
        if seatform.is_valid():
          #             ,    
          getSeat = Seat.objects.create(dateTime=date, classtime=time, status='0', user=name, number=label)
          getSeat.save()
上のSeat Form()は私達がviews.pyと同じレベルのディレクトリで作成したforms.pyです。
forms.py

class SeatForm(forms.Form):
#     date time           
  date = forms.CharField()
  time = forms.CharField()
このような方法でデータベースに保存できます。
以上のDjangoはModelの保存前にログを記録しています。つまり、小編集は皆さんに全部の内容を共有しています。参考にしてもらいたいです。どうぞよろしくお願いします。