2016-10-03 4 views
0

これは非常に基本的な質問です。私はすでに検索してそれを行う方法はたくさんありましたが、それについては良い練習方法を知りたいと思います。modelchoicefield djangoで選択した値の代わりにIDを取得する必要があります

私は別のテーブルからユーザーが選択したコードを格納しようとしているテーブルがあります。必要なのは

pos_codeをテーブルに保存しながら、descriptionのフィールド値を示すモデルフォームコンボボックスです。

これは私のモデルとフォーム:ここ

pos_code = forms.ModelChoiceField(queryset=Positions.objects) 

私はdescriptionを選択したユーザに対してpos_code挿入したい:私は、このモデルから選択フィールドを取得しています

class TmpPlInvoice(models.Model): 
    voucher_id = models.CharField(primary_key=True, max_length=10) 
    pos_code = models.ForeignKey(Positions, models.DO_NOTHING, db_column='pos_code', blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'tmp_pl_invoice' 

を:

class Positions(models.Model):          

    pos_code = models.CharField(primary_key=True, max_length=10, blank=True, null=True) 
    description = models.CharField(max_length=100, blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'positions' 

    def __unicode__(self): 
     return self.description 

しかし、それは私にdescriptionを与えるpos_codeのnstead。私は説明を返すことを知っていますが、私はそれをユーザーに示し、ビューにコードを取得する必要があります。 u'3452345' 、 '説明':体位:ここ

は私の完全な形式は、私が [IMG] http://i68.tinypic.com/zj89yx.jpg[/IMG] 現在のフォーム出力 { 'voucher_id' を持っている何

class TmpForm(forms.ModelForm): 
    description = forms.ModelChoiceField(queryset=Positions.objects.all()) 
    class Meta: 
     model = TmpPlInvoice 
     exclude = ['net_amt', 'post_date', 'address', 'posted', 'voucher_date', 'particulars'] 

あるプレミア工業用化学品}

私はこの「説明」を使用できません。私は私が必要なもの、私のTmpForm

をしてプレミア化学工業のコードを保存する必要が [IMG] http://i66.tinypic.com/nh0x2a.jpg[/IMG]

理想のフォーム出力 { 'voucher_id':u'3452345' 、 'pos_code':0001 }

+0

本当にあなたが人を助ける必要がある:(任意の提案が行うだろう。私は私の完全なフォームを掲載しているe4c5 @ – whatIf

+0

。 – whatIf

+0

e4c5 @あなたがobj.pos_code返す意味ですか? – whatIf

答えて

0

このモデルフォームは私の人生を保存しました。 MyModelChoiceFieldクラスはラベルを表示しますが、バックエンドにIDを送信します。

class MyModelChoiceField(forms.ModelChoiceField): 
    def label_from_instance(self, obj): 
     return obj.description 


class TmpFormm(forms.ModelForm): 
    pos_code = MyModelChoiceField(queryset=Positions.objects.all(), widget=forms.Select(attrs={'class': 'select2_single form-control', 'blank': 'True'})) 
関連する問題