У меня есть модель с некоторыми полями. Рассмотрим приведенную ниже модель.Только значение поля отображения из формы класса в Django
class Item(models.Model):
a = models.CharField(max_length=200)
b = models.BooleanField(default=False)
c = models.CharField(max_length=200)
Класс формы для соответствующей модели.
class ItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class Meta:
model = Item
localized_fields = '__all__'
fields = [
'a',
'b',
'c',
]
И вид для формы. Класс вида использует шаблон, который отображает все поля. Но поле c
будет отображаться только в том случае, если Поле b
- это правда.
{% if form.b.value %}
{% form.c %}
{% endif %}
поле c
не редактируемые и я просто хочу, чтобы показать значение, которое уже заранее определено.
Вопрос заключается в том, что если я использую if
условие в шаблоне (Предположим, что b
ложно), когда я загружаю форму он показывает 2 поля a
и b
и когда я отправить форму с b
значение ИСТИНА, форма перезагружается без сохранение всех трех полей со значением Поле c
как пустое.
Поле c
уже имеет значение и оно присутствует в БД, но оно не отображается. Почему это?
EDIT: Вот мой взгляд, довольно просто
class ItemGeneral(UpdateView):
form_class = ItemUpdateForm
template_name = 'pretixcontrol/item/index.html'
permission = 'can_change_items'
@transaction.atomic()
def form_valid(self, form):
# some code
return super().form_valid(form)
Вы можете попытаться установить Ĉ read_only вместо не редактируется? Так ли это работает? –