2017-05-15 1 views
0

Ich möchte den Namen des Modells innerhalb der Save() -Methode abrufen. Ich mag diese LinieDjango Modellname in Save() Methode

self.slug = create_slug(self.model_object, self.slug) 

ich hier die Modellnamen self.model_name erhalten müssen korrigieren. hier model course geerbt basemodel, aber ich muss den model Namen als course erhalten. Wie kann ich das machen? Jemand bitte hilf mir.

class BaseModel(models.Model): 
    slug = models.SlugField(unique=True, max_length=500) 

    def save(self, *args, **kwargs): 
     if self._state.adding == True: 
      if not self.slug: 
       self.slug = create_slug(self.model_object, self.slug) 

     return super(BaseModel, self).save(*args, **kwargs) 

    class Meta: 
     abstract = True 


class Course(BaseModel): 
    title = models.CharField(max_length=128) 

    class Meta: 
     db_table = "course" 

Antwort

1

Sie können dies erreichen, indem __class__ magische Eigenschaft mit

self.slug = create_slug(self.__class__, self.slug) 
+0

'str' Objekt kein Attribut 'Objekte' hat. Ich habe diesen Fehler bekommen. Es nimmt dieses Modell als String. – tstudent

+1

@tstudent Ich sehe keine Erwähnung von 'Objekten' in Code, den Sie eingefügt haben. Also konnte ich es nicht erklären. Aktualisieren Sie Ihre Frage oder erstellen Sie eine neue Frage. –

+0

statt selbst .__ Klasse __.__ Name__. Ich versuchte es selbst .__ Klasse__ und es funktionierte. Vielen Dank .. – tstudent

Verwandte Themen