

以下のモデルを定義します。

[code]

    class Prefecture(models.Model):
        prefecture = models.CharField(max_lengt=10, primary_key=True) #都道府県名
    
    
    class City(models.Model):
        city = models.CharField(max_length=10, primary_key=True) #市区町村名
        prefecture = models.ForeignKey(Prefecture) #都道府県名
    
    
    class Person(models.Model):
        name = models.CharField(max_length=10) #氏名
        address_prefectures = models.ForeignKey(Prefecture) #住所(都道府県)
        address_city = models.ForeignKey(City) #住所(市区町村名)
    
[/code]

各テーブルは、以下のようなデータを持ちます。

・都道府県テーブル

都道府県名  
---  
東京都  
神奈川県  
...  
  
・市区町村名テーブル

市区町村名 | 都道府県名  
---|---  
新宿区 | 東京都  
渋谷区 | 東京都  
横浜市 | 神奈川県  
... | ...  
  
・個人情報テーブル

氏名 | 都道府県 | 市区町村  
---|---|---  
山田太郎 | 東京都 | 新宿区  
... | ... |  
  
ここで、DjangoのAdminページから個人情報を登録するときに、address_prefecturesフィールドで都道府県名を指定すると、address_cityフィールドの選択肢に、その都道府県に属する市区町村だけ表示されるようにしたいです。  
(作成するwebページではなく、DjangoのAdminページからの登録です。)

どのように実装すればよいでしょうか？  
また、よりよいモデルやデータベースの設計があればご教授ください。


CC BY-SA 4.0
2023-01-30T06:20:47.327
93617
2023-04-06T11:56:19.593
2023-04-06T11:56:19.593
9820
56824
question
python django database
DjangoのModelで、limit_choices_toの条件として、他のフィールドを参照する方法