Необходимо сохранить ModelChoiceField в базу данных с помощью Django forms и Template
Здесь я использую Django 3.0 и Python 3.7
Я не могу сохранить ModelChoiceField в базу данных
Вот мой models.py
class ProductionProcess(models.Model):
client = models.ForeignKey(Client,on_delete=models.CASCADE)
name = models.CharField(max_length=500)
order = models.IntegerField(default=None, null=True, blank=True)
milestone_1 = models.CharField(max_length=200, blank=True, null=True)
def __str__(self):
return self.name
Вот мой views.py
class ProductionProcessAddCreateView(CreateView):
template_name = 'core/production_process_form_1.django.html'
form_class = ProductionProcessForm
context_object_name = "production"
model = ProductionProcess
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.client = self.request.user.client
try:
self.object.save()
messages.success(self.request, 'Production Process created successfully.')
except BaseException as e:
logger.exception(e)
messages.error(self.request, 'Failed to create a Production Process.')
return HttpResponseRedirect(reverse("production_process"))
Вот мой forms.py
class ProductionProcessForm(forms.ModelForm):
milestone_1 = forms.ModelChoiceField(queryset=ProductionProcess.objects.values_list("name", flat=True).distinct(),empty_label=None)
class Meta:
model = ProductionProcess
fields = ['name','order','milestone_1']
exclude = ['client']
Вот мой production_process_form_1.django.html
<form class="form-horizontal" method="post">
{% csrf_token %}
<div class="row">
<div class="span10 offset1">
<div class="control-group">
<label class="control-label pull-left" for="{{ form.name.auto_id }}">{{ form.name.label }}</label>
<div class="controls">
{{ form.name}}
</div>
</div>
<div class="control-group">
<label class="control-label pull-left" for="{{ form.order.auto_id }}">{{ form.order.label }}</label>
<div class="controls">
{{ form.order}}
</div>
</div>
<div class="control-group">
<label class="control-label pull-left" for="{{ form.milestone_1.auto_id }}">{{ form.milestone_1.label }}</label>
<div class="controls">
<select id="id_milestone" name="milestone_1">
<option value="" selected="selected">---------</option>
{% for cat in form.milestone_1 %}
<option>{{cat}}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
<div id="form-buttons-container" class="form-actions">
<input type="submit" class="btn btn-inverse" value="Save">
<a class="btn btn-default" href="{% url "production_process" %}">Cancel</a>
</div>
</form>
Здесь в моей форме для поля milestone_1 я отображаю значения поля name и когда я нажимаю кнопку сохранения, форма не сохраняется
Пожалуйста, помогите мне решить эту проблему