Все добра!
Кратко:
В форме есть поле , задача выводить только последние два «value» из значений модели поля «ForeignKey».
Подробно:
Для обновления формы использую «UpdateView», одно из полей имеет тип «ForeignKey», выводит не изменяемый список статусов (‘редактирование’, ‘согласование’, ‘доработка’, ‘утверждено’), требуется скрыть статус (‘редактирование’, ‘доработка’) из доступного выбора.
Пробовал в сторону переопределения методов во wiews.py покопать или html шаблоне, но знаний не хватает.
model.py
class Echk(models.Model):
dateCraet = models.DateTimeField(auto_now=True, verbose_name='Создано') #Дата создания карточки
subdivision = models.ForeignKey('subdivision', on_delete=models.PROTECT, null=True, verbose_name='Цех')#Свзь с таблицей цехов
workDate = models.DateTimeField(verbose_name='Дата работы')
applicationStatus = models.ForeignKey('applicationStatus', default=1, on_delete=models.PROTECT, verbose_name='Стутус заявки') #Статус заявки
note = models.TextField(blank=True, verbose_name='Примечание') #примечание
def get_absolute_url(self):
return reverse("add_application", kwargs={'pk': self.pk})
def __str__(self):
return str(self.pk)
class Meta:
verbose_name = 'Заявка'
verbose_name_plural = 'Заявки'
ordering = ['-id']
class ApplicationStatus(models.Model):
applicationStatus = models.CharField(max_length=150, db_index=True, verbose_name='Статус заявки') #Статус заявки
class Meta:
verbose_name = 'Статус заявки'
verbose_name_plural = 'Статусы заявок'
ordering = ['id']
def __str__(self):
return self.applicationStatus
views.py
class Application_update(UpdateView):
model = Echk
form_class = AddAapplicationForm
template_name = 'echk/update_application.html'
success_url = reverse_lazy('echk')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['idApplication'] = self.kwargs['pk']
return context
form.py
class AddAapplicationForm(forms.ModelForm):
workDate = forms.DateField(widget=SelectDateWidget(), initial=yesterday)
class Meta:
model = Echk
fields = ['subdivision', 'workDate', 'applicationStatus', 'note']
widgets = {}
update_application.html
{% extends 'base.html' %}
{% block container %}
<h1>Изменить заявку</h1>
<form action ="" method = "post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.non_field.errors }}
<div class="form-group">
<label for="{{ form.applicationStatus.id_for_label}} " > статус заявки </label>
{{form.applicationStatus}}
<div class="invalid-feetback">
{{ form.applicationStatus.errors}}
</div>
</div>
<br>
<button type= "sumbit" class = "btn btn-primary">Сохранить заявку </button>
</form>
{% endblock %}