Django Model保存前にログのインスタンスを記録します。
DjangoではどのようにModelを保存する前に一定の固定操作をしますか?
キーワード:信号
DjangoのModelを利用したSignal Displatchは、django.db.models.signals.pre_を通じてメソッドは、イベントが発生する前に、
発射する
トリガ信号は、すべてスケジュールされているreceiver方法によって深蔵された功と名前が保存されています。
信号の処理は一般的にModelに書いてあります。例を挙げます。
補足知識:Django models.save()の問題
Django views.pyはmodels.pyを引用してmodles.objects.createを行います。
直接保存はできません。データベースに提出します。
EX:
私たちはここでポストを通じて情報を得てから。
view.py
view.py
forms.py
以上の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の保存前にログを記録しています。つまり、小編集は皆さんに全部の内容を共有しています。参考にしてもらいたいです。どうぞよろしくお願いします。