Django - Как изменить значение формы.ModelChoiceField
Я хочу вывести значение из моего столбца Имя модели, используя forms.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>
Я хочу знать, как изменить значение "value" на столбец "name" в моей модели, например:
<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. Это объясняется в документации.