我在另一个类中定义了一个类。基本上,我试图重写中的save方法数据库模型--它实际上只是django.db.models.Model。但是当我运行这段代码时,我看到了an NameError。在class GameCenterDB:
class GameCenterDBConfig:
class Config:
db_for_read = "game_center_db.slave"
db_for_write = "default"
class PublisherTab(GameCenterDBConfig, db.Model):
publisher_id = db.PositiveIntegerField(primary_key=True)
name = db.CharField(max_length=100)
create_time = db.PositiveIntegerField()
update_time = db.PositiveIntegerField()
class Meta:
db_table = u'publisher_tab'
def save(self, *args, **kwargs):
curr_time = int(time.time())
if not self.create_time:
self.create_time = curr_time
self.update_time = curr_time
# See the line below, this triggers an error
# NameError: global name 'PublisherTab' is not defined
super(PublisherTab, self).save(*args, **kwargs)
根据我的理解,当它在GameCenterDB中时,我应该可以直接使用PublisherTab,对吗?在
^{pr2}$
像这样更改save方法将解决错误。但我不明白为什么。在def save(self, *args, **kwargs):
curr_time = int(time.time())
if not self.create_time:
self.create_time = curr_time
self.update_time = curr_time
super(GameCenterDB.PublisherTab, self).save(*args, **kwargs)
而且,似乎class PublisherTab(GameCenterDBConfig, db.Model):被解释得没有任何错误,mixin也起作用了。为什么GameCenterDBConfig可以毫无问题地使用?在