我有模特:
class MyClass(models.Model):
name = models.CharField(max_length=30)
hash = models.CharField(max_length=64)
others = models.ManyToManyField(OtherClass, related_name='other_class', through='OtherClassRelation')
现在我需要根据hash
创建others
。
def save(self, force_insert=False, force_update=False, using=None):
self.hash = self.generate_hash()
super(models.Model, self).save(force_insert, force_update, using)
但是save()
others
的时间是None
。
我正在使用admin-pages ...
在更新对象时,它可以正常工作。
有什么想法吗? TIA!
答案 0 :(得分:1)
据我了解,您使用内联编辑管理员中的MyClass.others
字段。如果是这样,那么您可以在保存M2M内联后覆盖ModelAdmin.save_related()方法来更新MyClass
实例。
class MyClass(models.Model):
....
def save(self, force_insert=False, force_update=False, using=None):
self.hash = self.generate_hash() if self.pk else 'NO-HASH-YET'
super(MyClass, self).save(force_insert, force_update, using)
class MyClassAdmin(admin.ModelAdmin):
def save_related(self, request, form, formsets, change):
# save M2M with `through` attribute
super(MyClassAdmin, self).save_related(request, form, formsets, change)
# update `MyModel` instance to regenerate hash
form.instance.save()