django中對數據庫增加額外的操作,有一種辦法是增加額外的manager方法是為模塊添加表級功能。比如下面這塊代碼段,我在models.py這個文件里面定義的: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但是,發現一個問題,如果我先定義了Book()這個模型,再定義BookManager()這個模型,會報"NameError:name'BookManager'isnotdefined",顯然是因為在Book類中使用了objects=BookManager()這個原因。而我印象中,似乎定義函數和類是沒有先后關系的;會在使用的時候自動查看是否聲明過。請大大幫指點下我這塊的知識盲點。謝謝!!馬年恭喜發財!
A類在B類中被使用,所以A類必須在文件中先被定義?有先后順序??
拉風的咖菲貓
2019-04-09 20:24:50