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. Это объясняется в документации.

Другие вопросы по тегам