Oto kod w samouczku django, przez który przechodzę. Nigdy wcześniej nie spotkałem się z super funkcją w Pythonie, a sposób jej użycia różni się od przykładów, które widziałem w Internecie. Np. Zazwyczaj gdy używasz super, nie masz wielu zajęć? To jest w ostatniej linii: super(Snippet, self).save(force_insert, force_update)
Czy mógłbyś wyjaśnić dokładnie, co się tam dzieje i jaki byłby alternatywny sposób napisania tego. Po prostu wydaje się, że metoda zapisu nazywa się tutaj?użycie superpikonu python w modelu django
class Snippet(models.Model):
title = models.CharField(max_length=255)
language = models.ForeignKey(Language)
author = models.ForeignKey(User)
description = models.TextField()
description_html = models.TextField(editable=False)
code = models.TextField()
highlighted_code = models.TextField(editable=False)
tags = TagField()
pub_date = models.DateTimeField(editable=False)
updated_date = models.DateTimeField(editable=False)
class Meta:
ordering = ['-pub_date']
def __unicode__(self):
return self.title
def save(self, force_insert=False, force_update=False):
if not self.id:
self.pub_date = datetime.datetime.now()
self.updated_date = datetime.datetime.now()
self.description_html = markdown(self.description)
self.highlighted_code = self.highlight()
super(Snippet, self).save(force_insert, force_update)
To nie tylko zmiana przodków Snippet; jeśli istnieje pewna forma dziedziczenia wielokrotnego w klasie podrzędnej klasy, wynik może być inny niż poprawny 'super (Snippet, self)'. –