2011-02-08 37 views
0

selectウィジェットのフィールド値をto_fieldまたはdb_column引数を使用して取得しようとしていますが、動作していないようです。ここでDjango:ForeignKey to_fieldとdb_columnが機能していないようです

がモデルである:

 

class Employer(models.Model): 
    e_name  = models.CharField(
            max_length = 40, 
            verbose_name = 'Name') 

    e_lastname = models.CharField(
            max_length = 40, 
            verbose_name = 'Lastname') 

    e_position = models.ForeignKey(
            to = Position, 
            db_field = 'p_name', # this is the thing I want to display as a select widget option 
            verbose_name = 'Position') 
 

代わりに私が選択ウィジェット内のみのモデルの名前をしました、またdb_columnEmployerモデルへの参照が、Position参照してください。

何が間違っているか、私が知らない新機能?

スルタン

+0

フォームがこのモデルのデータを入力できるようにしたいと思っていますか? –

+0

新しく作成された 'Employer'エンティティごとにポジションを選択できるようにするには、' Positions'にジョブポジションのリストがあります。 – sultan

答えて

1

あなたが必要とするすべては、HTMLのselectウィジェット内から選択して使用可能なすべてのポジション年代であるならば、あなたはこのようなものを得ることができます。

p_names = (p.name for p in Position.objects.all()) 

しかし、どのように生成するかをhtml?あなたがforms.Formを使用している場合は、

POS_CHOICES = [(p.id, p.name) for p in Position.objects.all()] 
class EmployerForm(forms.Form): 
    p_choices = forms.CharField(widget=forms.Select(choices=POS_CHOICES)) 

を使用して、HTMLテンプレート内でそれをレンダリングすることができます:

{{form.p_choices}} 

formsmodelformsを見てください。

編集: 私はちょうどdjango-adminタグを見ました。私は本当に管理領域でそれを行う方法を知らない、申し訳ありません。

+1

ModelChoiceFieldを使うことができますので、p_choices = forms.ModelChoiceField(queryset = Position.objects.all()) –

+1

とよく見えます。オブジェクトのstrメソッドのようにエントリがレンダリングされるものをカスタマイズしたり、ModelChoiceFieldの* label_from_instance *メソッドをオーバーライドすることもできます。 – XORcist

+0

うわー、ありがとう、grreat) – sultan

関連する問題