0

J'essaie de comprendre, s'il est possible d'hériter d'une classe python régulière dans un modèle django. L'idée est que j'ai besoin d'une interface commune pour les modèles et pour une autre partie du système (qui fonctionne avec mongo).Hériter de l'objet python dans le modèle Django

L'exemple est:

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

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

Faire myC Hériter du modèle et de la rendre abstraite n'est pas vraiment possible pour moi et encore plus. Je me demande donc à quoi ressemblerait la table pour myM (si ce que j'essaie de faire est possible).

Répondre

0

Oui, vous pourriez hériter vos modèles des classes régulières. Par exemple, créez des mixins pour vos modèles.
Ce mixin ajoutera manquant / à url champ chaque fois que vous enregistrez un modèle:

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): 
    ... 

Mais si vous voulez construire une interface commune pour plusieurs modèles sur votre projet une solution de classe abstraite sera mieux