Django model Diamond multiple inheritance

Обновить

April 2019

Просмотры

59 раз

1

Я веб-программирования стартера. Я делаю веб-программирование с Django. Я нашел проблему с моделированием. Ниже мой код. (Я писал об этом в Python 2.7.12.)

class ImageModel(models.Model):
    pass

class FaceModel(ImageModel):
    def save(self, *args, **kwargs):
        print "FaceModel"
        super(FaceModel, self).save(*args, **kwargs)
        # Do Something
        super(FaceModel, self).save()

class ObjectModel(ImageModel):
    def save(self, *args, **kwargs):
        print "ObjectModel"
        super(ObjectModel, self).save(*args, **kwargs)
        # Do Something
        super(ObjectModel, self).save()

class PlaceModel(ImageModel):
    def save(self, *args, **kwargs):
        print "PlaceModel"
        super(PlaceModel, self).save(*args, **kwargs)
        # Do Something
        super(PlaceModel, self).save()

class AllModel(FaceModel, ObjectModel, PlaceModel):
    pass

Но, В результате значение, которое я хочу. Но есть одна проблема. FaceModel.save () вызовите один, ObjectModel.save () называют два и PlaceModel.save () звонить в четыре раза. Это слишком медленно. Я хочу, чтобы вызвать функцию Save () для каждой модели только один раз. Что я должен делать?

0 ответы