django中對(duì)數(shù)據(jù)庫(kù)增加額外的操作,有一種辦法是增加額外的manager方法是為模塊添加表級(jí)功能。比如下面這塊代碼段,我在models.py這個(gè)文件里面定義的:fromdjango.dbimportmodels#...AuthorandPublishermodelshere...classBookManager(models.Manager):deftitle_count(self,keyword):returnself.filter(title__icontains=keyword).count()classBook(models.Model):title=models.CharField(max_length=100)authors=models.ManyToManyField(Author)publisher=models.ForeignKey(Publisher)publication_date=models.DateField()num_pages=models.IntegerField(blank=True,null=True)objects=BookManager()def__unicode__(self):returnself.title但是,發(fā)現(xiàn)一個(gè)問(wèn)題,如果我先定義了Book()這個(gè)模型,再定義BookManager()這個(gè)模型,會(huì)報(bào)"NameError:name'BookManager'isnotdefined",顯然是因?yàn)樵贐ook類中使用了objects=BookManager()這個(gè)原因。而我印象中,似乎定義函數(shù)和類是沒(méi)有先后關(guān)系的;會(huì)在使用的時(shí)候自動(dòng)查看是否聲明過(guò)。請(qǐng)大大幫指點(diǎn)下我這塊的知識(shí)盲點(diǎn)。謝謝?。●R年恭喜發(fā)財(cái)!
A類在B類中被使用,所以A類必須在文件中先被定義?有先后順序??
拉風(fēng)的咖菲貓
2019-04-09 20:24:50