2012-02-07 9 views
3

djangoの「スマート選択」アプリが正常に機能するようになっています。チェインされたフィールドの選択には値が設定されません。 githubの "readme"ファイル "https://github.com/digi604/django-smart-selects"には以下の指示があります。djangoスマート選択アプリ

  • 連鎖フィールドは、同じモデル上のフィールドでも、連鎖する必要があります。
  • 連鎖モデルフィールドは、連鎖フィールドによってもリンクされているモデルに対応する連鎖モデルのフィールドです。

私は指示が少しわかりにくく、大陸と郡のテーブルのモデルを表示しないようにしました。

私は以前に質問したことがありますが、私はこれに応答しませんでした。それは私の特定のモデルに関するより多くの情報を持っています。 "http://stackoverflow.com/questions/9155350/django-smart-selects-second-level-wont-populate"

「django-smart-select」エキスパートがあります。おかげ国= ChainedForeignKey()フィールドのための所与の例において

from smart_selects.db_fields import ChainedForeignKey 

class Location(models.Model) 
    continent = models.ForeignKey(Continent) 
    country = ChainedForeignKey(
     Country, 
     chained_field="continent", 
     chained_model_field="continent", 
     show_all=False, 
     auto_choose=True 
    ) 
    area = ChainedForeignKey(Area, chained_field="country", chained_model_field="country") 
    city = models.CharField(max_length=50) 
    street = models.CharField(max_length=100) 

答えて

0

は、chained_field =「大陸」は、ロケーションクラスの「大陸」フィールドを指します。 chained_model_field = "大陸"は国モデル内の "大陸"フィールドを指します(この例では示されていません)。

+0

それも私がそれを解釈した方法です。しかし、それは動作していません。 – BillB1951

+0

遅れて申し訳ありませんが、はい、Countryクラスは大陸へのForeignKeyを持っている必要があります。AreaにはForeignKey to Country、CityにはForeignKeyがAreaに必要です。 – dragonx

0

それは私がそれをドラゴンズと解釈する方法です。しかし、私は明らかに何かが欠けている。私は他のクラスを考えています

は国クラスの「大陸」は大陸クラス(のForeignKey /フィールド)のIDフィールドに対応する整数フィールドであることと、この

class Continent(models.Model): 
    continent = models.CharField(max_length=45)  
    def __unicode__(self): 
     return self.continent 

class Country(models.Model): 
    continent = models.ForeignKey(Continent) 
    country = models.CharField(max_length=45) 
    def __unicode__(self): 
     return self.county 

ようになり、その上に参加する。これはあなたがそれを見る方法ですか?

2

あなたはurls.pyでこれを挿入する必要があります。

URL(R '^チェーン/'、( 'smart_selects.urls')を含む)に、

をこれは私がやったと働いていたものです:

#================================= 
#models.py 

from smart_selects.db_fields import ChainedForeignKey 

class Continent(models.Model): 
    continent = models.CharField(max_length = 45)  
    def __unicode__(self): 
     return unicode(self.continent) 

class Country(models.Model): 
    continent = models.ForeignKey(Continent) 
    country = models.CharField(max_length = 45) 
    def __unicode__(self): 
     return unicode(self.country) 

class Area(models.Model): 
    country = models.ForeignKey(Country) 
    area = models.CharField(max_length = 45) 
    def __unicode__(self): 
     return unicode(self.area) 

class Location(models.Model): 
    continent = models.ForeignKey(Continent) 
    country = ChainedForeignKey 
    (
     Country, 
     chained_field = "continent", 
     chained_model_field = "continent", 
     show_all = False, auto_choose = True 
    ) 
    area = ChainedForeignKey(Area, chained_field = "country", chained_model_field = "country") 
    city = models.CharField(max_length = 50) 
    street = models.CharField(max_length = 100) 

#================================= 
#admin.py 


from yourapp.models import Continent 
from yourapp.models import Country 
from yourapp.models import Area 
from yourapp.models import Location 


class ContinentAdmin(admin.ModelAdmin): 
    pass 

class CountryAdmin(admin.ModelAdmin): 
    pass 

class AreaAdmin(admin.ModelAdmin): 
    pass 

class LocationAdmin(admin.ModelAdmin): 
    pass 

admin.site.register(Continent, ContinentAdmin) 
admin.site.register(Country, CountryAdmin) 
admin.site.register(Area, AreaAdmin) 
admin.site.register(Location, LocationAdmin) 
関連する問題