У меня есть модель, скажем, «Статьи», с полемКак динамически установить значение поля в представлениях?
published = models.BooleanField(default=True)
и шаблон с условием:
{% if user.is_staff %}
<li>form.published.label_tag</li>
<li>form.published</li>
{% else %}
<li>form.published.as_hidden</li>
{% endif %}
и я использую общие взгляды на основе классов для добавления и обновления для этой модели ,
В этом случае для обычных сотрудников и злоумышленников по-прежнему возможно заменить значение published
.
Я думаю, что я должен переместить условие просмотров уровня, чтобы предотвратить эту проблему, somithing как
class ArticleEdit(UpdateView):
model = Article
form_class = ArticleForm
def form_valid(self, form):
self.object = form.save(commit=False)
if self.request.user.is_staff:
''' How to let the staff change this value? '''
else:
''' How to set previous value? '''
self.object.save()
return HttpResponseRedirect(self.get_success_url())
при условии, что я удалить это скрытое поле из шаблона.
Этот код установит 'опубликовано' на' False', даже если это было 'True' перед редактированием. Как мне это преодолеть? Спасибо, что нашли время помочь. –
Он не должен этого делать. Я думаю, проблема может быть в вашем шаблоне. Попробуйте представить форму как '{{form}}' и посмотреть, все ли это происходит. – Alasdair
К сожалению, мои плохие :) Ваше предложение работает. Еще раз спасибо! –