2017-10-28 13 views
0

私は2つのDjangoモデルを作成しました。あるモデルのフィールドは別のモデルの外部キーです(下記参照)。Djangoの管理ページで外部キー項目の名前を変更

class Units(models.Model): 
    name = models.CharField(max_length=10, primary_key=True) 
    symbol = models.CharField(max_length=5) 


class Targets(models.Model): 
    name = models.CharField(max_length=100) 
    unit = models.ForeignKey(MicroNutrientUnits) 
    ... 

これらのモデルは、admin.site.registerによって管理サイトに登録されます。ターゲットテーブルにアイテムを追加する場合、はテーブルユニットのアイテムを正しく反映しますが、各エントリの名前は単位オブジェクトです。

管理者の設定ページで、管理者の名前をUnits.nameに設定するにはどうすればよいですか。

答えて

2

管理画面で再生を開始したときと同じ問題が発生しました。これを行う良い方法があるのか​​どうかはわかりませんが、私がしたことはmodels.pyファイルを変更してクラスにデフォルトの文字列として返すものを教えることでした。あなたの場合、私はあなたのUnitsクラス定義に以下を追加します。

class Units(models.Model): 
    name = models.CharField(max_length=10, primary_key=True) 
    symbol = models.CharField(max_length=5) 

    def __str__(self): 
     return self.name 

この方法で、あなたがテーブルに外部キーのリンクを使用する場合、Djangoは、ドロップダウンリスト内の各ユニットの名前が表示されます代わりに、何度も言葉だけ「単位」。

+0

この場合、これは素晴らしいです(ユニットは常に名前で参照されるため)が、_admin.py_ファイルでこれを行う方法が必要であると感じています。 –

関連する問題