2017-09-15 65 views
3

這是我的類的外觀。從django添加實例admin

class School(models.Model): 
    state = models.ForeignKey(State, on_delete=models.CASCADE) 
    region = models.ForeignKey(Region, on_delete=models.CASCADE) 
    cluster = models.ForeignKey(Cluster, on_delete=models.CASCADE) 
    school_name = models.CharField(max_length=250) 
    facilitator = models.CharField(max_length=250) 
    f_number = models.IntegerField() 
    f_email = models.EmailField() 
    school_logo = models.FileField(default='') 
    school_strength = models.IntegerField() 

在哪個州,地區,集羣也是類。我試圖建立一個分爲3級的學校網絡,即州,地區,集羣。 我曾經假設,當我從django admin添加學校時,我認爲它可能會過濾區域,如果我選擇區域時選擇狀態和過濾羣集,以便它很容易。但它似乎並不奏效。雖然在選擇特定州和地區的同時,在集羣下拉列表中添加學校後,所有州和地區的所有集羣即將到來。

有沒有解決這個或截至目前我們沒有在Django的這樣的選擇?

+0

有趣的問題。我想知道如果這是可能的。 –

+0

這真的會幫助管理員管理他們網站上的東西。讓我們希望有人會提出一個解決方案。 –

+0

@PabloVergés,我已經回答了這個問題,希望它能幫助你! –

回答

1

嘗試ChainedForeignKeydjango-smart-selects包它的作品就像一個魔術。 smart_selects的

安裝

pip install django-smart-selects 

項目settings.py

INSTALLED_APPS=[ 
    . . . . . 
    . . . . . 
    'smart_selects', 
    . . . . . 
] 

項目urls.py

urlpatterns = [ 
    . . . . . 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^chaining/', include('smart_selects.urls')), 
    . . . . . 
] 

installation of django-smart-selects

工作ChainedForeignKey

from smart_selects.db_fields import * 

class State(models.Model): 
    stateName = models.CharField(max_length=500) 
    . . . . 

class Region(models.Model): 
    state = models.ForeignKey(State, on_delete=models.CASCADE) 
    regionName = models.CharField(max_length=500) 
    . . . . . 
    . . . . . 


class Cluster(models.Model): 
    state = models.ForeignKey(State, on_delete=models.CASCADE) 
    region = ChainedForeignKey(Region,chained_field="state",chained_model_field="state", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE) 
    clusterName = models.CharField(max_length=500) 
    . . . . . 
    . . . . . 



class school(models.Model): 
    state = models.ForeignKey(State, on_delete=models.CASCADE) 
    region = ChainedForeignKey(Region, chained_field="state",chained_model_field="state", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE) 
    cluster = ChainedForeignKey(Cluster, chained_field="region",chained_model_field="region", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE) 
    schoolName = models.CharField(max_length=500) 
    . . . . 
    . . . . 

試試這個,它運作良好,在admin area

希望它有幫助!!!!!

+0

如何使用它? 我是初學者:p –

+0

好的,等待我給你的詳細信息 –

+0

@venkatmanisai,這是你們兩個的解決方案。希望能幫助到你!!! –