2017-09-15 2 views
3

これは私のクラスの外観です。djangoからインスタンスを追加する

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の管理者から学校を追加するときに、状態を選択すると領域をフィルタリングして領域を選択するとクラスターをフィルタリングすると思っていました。しかし、それは動作していないようです。特定の州と地域を選択した後、クラスターのドロップダウンに学校を追加すると、すべての州と地域のすべてのクラスターが表示されます。

これについての解決策はありますか?または今のところ、私たちはdjangoでそのようなオプションを持っていませんか?

+0

興味深い質問です。これが可能ならば私も知りたい。 –

+0

これは本当に管理者が自分のウェブサイトのコンテンツを管理するのに役立ちます。誰かが解決策を思い付くことを祈りましょう。 –

+0

@PabloVergés、私はこれに答えました、それがあなたを助けることを願っています! –

答えて

1

はそれが魔法のように動作しますdjango-smart-selectsパッケージからChainedForeignKeyを試してみてください。 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、ここではあなたの両方のためのソリューションです。それが役に立てば幸い!!! –

関連する問題