0
我對我的一個數據模型使用Django amdin。我想在每個模型的管理界面上顯示自定義值。 在db上,單個查詢的結果以django admin上的多個查詢運行,每行一個 我試圖避免這種情況。避免多個查詢在Django上顯示模型數據admin
這裏是我的模型:
class words(models.Model):
word_id=models.AutoField(primary_key=True)
word=models.CharField(max_length=200,unique=True)
def __unicode__(self):
return '%s - %s' % (self.word,self.word_id)
class meanings(models.Model):
id=models.AutoField(primary_key=True)
word_id=models.ForeignKey(words,on_delete=models.CASCADE,db_column='word_id')
meaning=models.CharField(max_length=200)
def __unicode__(self):
return '%s %s %d ' % (self.spelling_id.spelling,self.meaning,self.id)
對於第二個模型,而加載頁面,對於每一行,我看到有一個運行在詞表及其他有關含義表2次的查詢。 (從調試工具欄)
我試圖避免通過使用下面的選項。
models.py:
class meanings(models.Model):
meaning_id=models.AutoField(primary_key=True)
word_id=models.ForeignKey(words,on_delete=models.CASCADE,db_column='word_id')
meaning=models.CharField(max_length=200)
admin.py:
def modified_output(self):
cursor = connection.cursor()
cursor.execute("select word,meaning,id from meanings a,words b where a.word_id=b.word_id and meaning_id= "+str(self.id))
row = dictfetchall(cursor)
a=unicode(row[0]['word'])
b=unicode(row[0]['meaning'])
d=(row[0]['id'])
return '%s %s %d ' % (a,b,d)
meanings.add_to_class("__str__", modified_output)
現在對於每行只有1查詢運行。但由於對模型的依賴關係在查詢連接中有兩個以上的表,它仍然會佔用時間。所以我的問題是不是每行都運行1個查詢,我們可以直接爲每個頁面顯示查詢結果。
對頁面上的下面的查詢結果的例:
select * from table ;
,而不是
select * from table when id=1;
select * from table when id=2;
.
.
.
任何幫助是極大appreciated.Thanks
我沒有得到你的代碼段在哪裏符合我的要求,以及如果我必須連接多個表。 – user168983
list_select_related是一個元組,因此猜測要做什麼以進行更多的連接。這進入admin.py。它沒有在模型上實現,因爲它不屬於模型。基本上,'list_select_related'使用[查詢相關工具](https://docs.djangoproject.com/en/1.11/ref/models/querysets/#query-related-tools)來做正確的事情。 – Melvyn
我需要從加入是詞但不是詞id,我沒有得到如何這有助於我的要求 – user168983