0

Я пытаюсь понять, если можно наследовать обычный класс python в модели django. Идея заключается в том, что мне нужен общий интерфейс для моделей и для другой части системы (которая работает с монго).Inherit python object в модели Django

Примером является:

class myC(object): 
    def __init__(self): 
    self.f = "test" 

class myM(myC, models.Model): 
    name = models.CharField(max_length=50) 

Создание myC наследоваться от модели и делает его аннотация не представляется возможным для меня, и даже больше. Поэтому мне интересно, как выглядит таблица для myM (если то, что я пытаюсь сделать, возможно).

ответ

0

Да, вы можете наследовать свои модели из обычных классов. Например, создайте некоторые миксины для своих моделей.
Эта примесь будет добавить недостающую / в url поле каждый раз, когда вы сохраняете модель:

class ModelURLSaveMixin(object): 

    def save(self, *args, **kwargs): 
     if not self.url.startswith('/'): 
      self.url = '/' + self.url 
     if not self.url.endswith('/'): 
      self.url = self.url + '/' 
     super(ModelURLSaveMixin, self).save(*args, **kwargs) 


class MyModelWithUrlField(ModelURLSaveMixin, models.Model): 
    ... 

Но если вы хотите создать общий интерфейс для нескольких моделей на ваш проект абстрактного решение класса будет лучше