2016-07-19 8 views
0

でdynmaic選択肢を反映しています。(AとBにそれらを呼び出す)Djangoは管理者doesnot私は2つの異なるシステム上で実行されている2つのプロジェクトを持っているchoiceField

Aに私は1つの動的選択フィールドを持つモデルを持っています。

class ModelA(models.Model): 
     field1 = models.CharField(max_length=255, choices=get_field1_list()) 
     #..some more fields 

get_field1_list()機能で、私はシステムB上で実行されているAPIを呼び出し、それがModelB(プロジェクトB)から来ている(選択フィールドに必要な)タプルのリストを返します

[(a,A), (b,B), (c,C)...] 

今、私はこのモデル(ModelB)を管理パネルから変更すると(もう一つ行が追加されます)、modelAの選択肢に反映されるはずです。 管理パネルを更新しましたが、まだ表示されません。サーバーA(ローカルサーバー)を再起動すると、ModelA(システムA)の選択肢に新しく追加された(システムBの)行が表示されます。

私の質問はなぜこれが起こっているのですか?どのように私は生産のように毎回uwsgiやnginxを再起動したくないかもしれないので、この問題を解決することができます。 Djangoの1.9では

+0

この場合、 'choices'は動的ではありません。最初の呼び出しで 'get_field1_list'が返されたものです。 'ModelA'と' ModelB'と 'ModelA.field1 = ForeignKey(ModelB)'との関係を設定するほうが良いでしょうか? –

+0

彼らはどちらも別々のプロジェクトです。私はインポートして直接外部キーを使用することはできません – Wendy

答えて

1

、私は私がlazyを使用してい

from django.utils.functional import lazy 

class ModelA(models.Model): 

    field1 = models.CharField(max_length=255, blank=False, null=False) 
    # .. 

    def __init__(self, *args, **kwargs): 
     super(ModelA, self).__init__(*args, **kwargs) 
     self._meta.get_field('field1').choices = lazy(get_field1_list, list)() 

NOTEこの方法をやっています。それを無視することができます

関連する問題