ユーザがdjangoの管理者に関連する(インライン)データを保存して外部APIを呼び出すときに傍受する必要があります。私は親と子としてHostelGuestとエントリーポイントと同じページのホステルに持ってadmin.pyでDjango admin - save_related()を使用してインラインフォームのデータを解析するにはどうすればよいですか?
class Hostel(models.Model):
name = models.CharField(max_length=50)
descr = models.CharField(max_length=200)
....
class User(models.Model):
name = models.CharField(max_length=50, blank=False)
nick = models.CharField(max_length=20, blank=False)
password = models.CharField(max_length=20, blank=False)
class HostelGuest(models.Model):
hostel = models.ForeignKey(Hostel)
guest = models.ForeignKey(User)
entry_date = models.DateTimeField(null=True,blank=True)
class HostelEntryPoint(models.Model):
hostel = models.ForeignKey(Hostel)
getting_here = models.CharField(max_length=300, blank=False)
distance = models.CharField(max_length = 30, blank = True)
: は、私は次のモデルを持っています。 HostelGuestの一部のデータが変更されるたびに、追加/削除/更新かどうかを調べ、外部APIを呼び出す必要があります。私はsave_related()を使用することを考えましたが、受信したデータを解析して、実行されたアクションを把握することができません。これは私が持っている限り、どんな助けも大いに評価されるでしょう!
class HostelEntryPointInline(admin.TabularInline):
model = HostelEntryPoint
extra = 3
class HostelGuestInline(admin.TabularInline):
model=HostelGuest
extra=4
class HostelAdmin(admin.ModelAdmin):
inlines = [HostelGuestInline, HostelEntryPointInline]
def save_related(self, request, form, formsets, change):
super(HostelAdmin, self).save_related(request, form, formsets, change)
logger = logging.getLogger(__name__)
obj = form.instance
obj.save()
for formset in formsets:
for f in formset:
logger.error('form name:' + f.__class__.__name__)
logger.error('form:' + f.cleaned_data['guest'])
admin.site.register(Hostel,HostelAdmin)
どのように値が追加/更新/削除されたかを、私はどのようにしてHostelGuestで知ることができますか? – LeandroG
@LeandroGどの値が変更されたかはわかりません。管理者の場合、あなたのホステルオブジェクトを保存すると、obj.save_related()はHostelGuestを保存するように呼び出されます。 – beCurious
あなたは更新するか、追加または削除することができますあなたのHostelGuestだけHostelGuestFormを作る。この[document](https://docs.djangoproject.com/es/1.9/topics/forms/modelforms/#the-save-method)とこの[document](https://docs.djangoproject.com/es)を参照してください。 /1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_related) – beCurious