Оператор if для определенного поля в шаблоне django
Я вывожу форму в шаблоне django, используя эту модель:
class Group(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
members = models.IntegerField(default=0)
has_max = models.BooleanField(default=False)
max_size = models.IntegerField(default=10)
DAYS = [
('Sundays', 'Sundays'),
('Mondays', 'Mondays'),
('Tuesdays', 'Tuesdays'),
('Wednesdays', 'Wednesdays'),
('Thursdays', 'Thursdays'),
('Fridays', 'Fridays'),
('Saturdays', 'Saturdays'),
]
meeting_day = MultiSelectField(
verbose_name = 'Meeting day(s)',
choices=DAYS,
max_choices=6,
max_length=100
)
start_time = TimeField(widget=TimePickerInput)
end_time = TimeField(widget=TimePickerInput)
def __str__(self):
return self.name
И на этот шаблон:
<form method="POST">
{% csrf_token %}
{{form.as_p}}
<button>POST</button>
</form>
У меня есть пара вопросов на будущее:
Моя первая проблема заключается в том, что я хочу, чтобы max_size
отображался в моей форме шаблона только в том случае, если пользователь нажмет has_max
. Например, условное условие, когда пользователь устанавливает флажок, меняя has_max
на True
, тогда он может ввести максимальный размер группы.
Моя вторая проблема заключается в том, что start_time
и end_time
не отображаются в моем шаблоне или на стороне администратора. Я не уверен, как работает TimePickerInput
, но прямо сейчас в моей форме шаблона или форме администратора нет полей, которые имеют эти временные поля.
И последнее, если у меня оба имени одинаковые (т.е. ('Sundays', 'Sundays'),
), нужно ли иметь оба? Или django может сам разобраться.
Первая проблема, как я понимаю, вы хотите иметь этот флажок и когда он будет истинным, появится поле max_size
Эта проблема должна быть решена с помощью javascript
Почему?
Потому что если вы используете Django template
, вам придется обновлять страницу, когда пользователь что-то изменит, а это перегрузит сервер. Поэтому вам нужно создать событие с js
, когда пользователь нажмет на checkbox
, оно исчезнет
И последнее, если у меня оба имени одинаковые (т.е. ('Sundays', 'Sundays'), нужно ли иметь оба? Или Django сам разберется?
.
Эта часть ... Вы должны знать, что первое значение - это значение, которое будет храниться в базе данных, а второе значение - это человекочитаемое значение, то, что будет отображаться для пользователя в форме Read This
Вы должны знать, что вы не можете поместить виджеты в вашу модель, если вы хотите добавить их, добавьте их в ваши файлы admin
или form
... Вы переопределите AdminModel
в вашем admin
файле и измените form
значение Read This