2017-02-10 95 views
1

我想使用forms.ModelChoiceField從我的模型名稱列中輸出值。我已閱讀了很多有關該主題的文檔,但其證明難以達到預期的結果!Django - 如何更改窗體的值.ModelChoiceField

這是我的代碼。

我有這樣的形式:

forms.py

from django import forms 
from asset_db.models import Profiles 


class SubmitJob(forms.Form): 

    material_id = forms.CharField(max_length=8) 
    workflow = forms.ModelChoiceField(queryset=Profiles.objects.distinct('name')) 
    start_datepicker = forms.CharField(max_length=12) 
    end_datepicker = forms.CharField(max_length=12) 

這種模式:

class Profiles(models.Model): 

    id = models.DecimalField(6).auto_creation_counter 
    name = models.CharField(max_length=256, default='null') 
    target_path = models.CharField(max_length=256, default='null') 
    target_profile = models.TextField(max_length=1024, default='null') 
    package_type = models.CharField(max_length=256, default='null') 
    video_naming_convention = models.CharField(max_length=256, default='null') 
    image_naming_convention = models.CharField(max_length=256, default='null') 
    package_naming_convention = models.CharField(max_length=256, default='null') 

    def __str__(self): 
     return self.name 

下面是HTML輸出:

<p><label for="id_workflow">Workflow:</label> <select id="id_workflow" name="workflow" required> 
<option value="" selected="selected">---------</option> 
<option value="2">Amazon</option> 
<option value="1">Test</option> 
</select></p> 

我想知道如何將「價值」的價值改變爲t他列我的模型中的「名稱」,例如:

<p><label for="id_workflow">Workflow:</label> <select id="id_workflow" name="workflow" required> 
<option value="" selected="selected">---------</option> 
<option value="Amazon">Amazon</option> 
<option value="Test">Test</option> 
</select></p> 

在此先感謝。

回答

1

您可以將to_field_name="name"添加到您的ModelChoiceField中。這在documentation中有解釋。

+0

哇,就這麼簡單!像Django中的許多事情一樣。我似乎花費大部分時間來思考如何解決這些問題。謝謝您的幫助。 – Lewis909