Đây là một số mã trong hướng dẫn django mà tôi sẽ trải qua. Tôi đã không bao giờ đi qua các chức năng siêu trong python trước và cách nó được sử dụng ở đây là khác nhau từ các ví dụ tôi đã nhìn thấy trực tuyến. Tức là, thường khi bạn sử dụng siêu, bạn không có nhiều lớp học? Đó là dòng cuối cùng: super(Snippet, self).save(force_insert, force_update)
Bạn có thể giải thích chính xác những gì đang xảy ra ở đó và điều gì sẽ là một cách thay thế để viết điều đó. Nó chỉ có vẻ như phương pháp tiết kiệm được gọi là chính nó ở đây?sử dụng chức năng siêu python trong mô hình 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)
Không chỉ khi tổ tiên của Snippet bị thay đổi; nếu có một dạng đa thừa kế nhất định trong một lớp con của Snippet, kết quả có thể khác với 'super (Snippet, self)' chính xác. –