Итак, я работаю над этой платформой управления деятельностью, мы используем Django 3.0.4. Перед тем, как разоблачить свою проблему, я должен сказать, что я немного новичок в Django и python.
Моя текущая цель - разрешить администратору устанавливать определенные c даты для указанных c Мероприятия. Изначально на странице должны отображаться текущие даты и детали. Что я уже могу сделать с кодом, показанным ниже
Это пример модели, используемой для хранения дат
class Dates(models.Model):
id = models.AutoField(db_column='ID', primary_key=True)
datestart = models.DateTimeField(db_column='DateStart')
dateend = models.DateTimeField(db_column='DateEnd')
class Meta:
db_table = 'Dates'
Это моя форма
class dateForm(forms.ModelForm):
class Meta:
model = Dates
exclude = ['id']
И это моя текущая функция просмотра
def editdates(request):
dates_current = Dates.objects.get(id=1)
dates_form = dateForm(instance=dates_current)
if request.method == 'POST':
submitted_data = request.POST.copy() #Might need to change incoming data before saving to db
dates_form = diaAbertoSettingsForm(submitted_data, instance=dates_current) #Generate form with existing data
if dates_form.is_valid():
dates_form.save()
return render(request=request,
template_name = 'dates/edit.html',
context = {'form': dates_form})
На той же странице, где отображаются данные (даты), также необходимо разрешить отправку изменений, это было бы относительно легко сделать. Настоящая проблема начинается, когда я хочу отправить форму.
В настоящее время я делаю следующее, чтобы отобразить текущие значения
<div class="column">
<div class="field">
{% if form.datestart.errors %}
<div class="alert alert-danger">
<strong>{{form.datestart.errors}}</strong>
</div>
{% endif %}
<label class="label">Date Start</label>
<div class="control">
<input class="input" type="text" name="datestart" value='{{form.datestart.value}}'>
</div>
</div>
</div>
Все в порядке, пока вы не увидите, что результат из {{form.datestart.value}}
это не нормальный формат даты / времени "ГГ-ММ-ДД Ч: М: С" (например, 2000-01-01 00:00:00), как вы ожидаете, но "письменный" out "format like" 1 января 2000, полночь ", что, очевидно, вызывает проблемы, когда я хочу, чтобы пользователь отредактировал эту дату. Если бы они сохраняли формат, форма возвращала бы ошибку, говоря, что формат dateTime недействителен.
Чтобы решить эту проблему, я попробовал следующее:
- Поворот Выключите " Форматировать локализацию " в settings.py и для шаблона по шаблонам
- Выключите " Перевод ", так же, как указано выше
- I Я пытался использовать фильтры даты, описанные в django документации
- Я также пытался использовать анализатор даты и времени из django utils
Я также осмотрел другие источники, кроме документации, но, похоже, ни один из них не разделяет мою проблему.
Если бы я поставил {{form.datestart}}
вместо {{form.datestart.value}}
, действительно заставил бы его прийти Это правильно, но так как я хочу использовать классы от bulma, я не вижу способа обойти это.
Как я могу сделать так, чтобы {{form.datestart.value}}
получился как 2000-01-01 00:00:00
, а не как Jan. 1, 2000, midnight
?
Это только пример, реальная модель имеет около 10 различных стартов / даты окончания, поэтому способ автоматизировать их, был бы идеальным, но не обязательным.