0
我需要在用户保存django admin中的相关(内联)数据以调用外部API时拦截。 我有以下型号:Django管理员 - 我如何使用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)
在admin.py我在同一页旅馆为家长和HostelGuest和入口点为儿童。每当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。看到这个[文档](https://docs.djangoproject.com/es/1.9/topics/forms/modelforms/#the-save-method)和这个[文档](https://docs.djangoproject.com/es /1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_related) – beCurious