Общее
У меня есть два вида пользователей и одно поле («кластер»), которое я хочу использовать по-разному:
Старшие пользователи - выберет кластер из списка.
Младшие пользователи - поле будет скрыто от них и всегда будет вводить одно и то же значение в форму поля + модель + ячейка базы данных.
Моя проблема
Для старших все отлично работает - поле показывается и их можно выбрать.
Проблема в том, что у младших пользователей поле скрыто (как и должно быть), но тогда я получаю «Это поле обязательно для заполнения» Ошибка.
Я пытался добавить в models.py параметры blank = True, null = True , но это не помогло.
Мой код
Forms.py:
class myModelForm(ModelForm):
class Meta:
model = myModel
def __init__(self, *args, **kwargs):
super(myModelForm, self).__init__(*args, **kwargs)
self.fields['cluster'] = forms.ChoiceField(choices=[(x,x) for x in myModel.objects.get(f_id=USER_FAMILY).supportedClustersInFamily.split(',')])
Models.py:
class myModel(models.Model):
cluster = models.CharField(max_length=20, blank=True)
Views.py:
def proccessMyModel(request):
form = myModelForm(request.POST or None)
if request.method == "POST" and form.is_valid():
result = form.save(commit=False)
if not request.user.has_perm('my_webapp.senior_permission'):
result.cluster= "DEFAULT CLUSTER"
result.save()
return HttpResponseRedirect(reverse('my_webapp.views.index'))
return render_to_response("my_webapp/myModelForm.html", {
"form": form,
}, context_instance=RequestContext(request))
myForm.html:
<form action="/my_webapp/myModelForm" method="post">{% csrf_token %}
{% if perms.my_webapp.senior_permission %}
<div class="fieldWrapper">
<label for="id_cluster">Cluster:</label>
{{ form.cluster }}
</div>
{% endif %}
<p><input type="submit" value="submit" /></p>
</form>
Отчаянный текст ...
Я много искал и нигде не могу найти ответ! Спасибо за ваше время !!