Как сделать, чтобы значение само записывалось в бд при создании новой строки?
У меня есть форма, где пользователь может ввести значения для 4 полей из 5. Пятое поле представляет собой поле даты и времени. Как я могу сделать так, чтобы дата и время автоматически записывались в эту строку бд при добавлении этой строки?
html:
<form method='post' id='adding_text'>
{% csrf_token %}
{{ form.author }}<br>
{{ form.title }}<br>
{{ form.topic }}<br>
{{ form.text }}<br>
{{ form.date_and_time }}<br>
<button type='submit' id='submit_button_in_adding_text_form'>Добавить</button>
</form>
forms.py:
from .models import Texts
from django import forms
from django.forms import ModelForm
class TextsForm(ModelForm):
class Meta:
model = Texts
fields = ['author', 'title', 'topic', 'text', 'date_and_time']
widgets = {
'author': forms.TextInput(attrs={
'class': 'input_author input_in_adding_text',
'placeholder': 'Текст',
'readonly': 'readonly'
}),
'title': forms.TextInput(attrs={
'class': 'input_title input_in_adding_text',
'placeholder': 'Название текста'
}),
'topic': forms.TextInput(attrs={
'class': 'input_topic input_in_adding_text',
'placeholder': 'Тема текста',
}),
'text': forms.Textarea(attrs={
'class': 'input_text input_in_adding_text',
'placeholder': 'Текст'
}),
'date_and_time': forms.DateTimeInput(attrs={
'class': 'input_date_and_time input_in_adding_text',
'placeholder': 'Дата и время',
'readonly': 'readonly'
}),
}
models.py:
class Texts(models.Model):
author = models.CharField('Автор', max_length=50, default='Аноним')
title = models.CharField('Название', max_length=100)
topic = models.CharField('Тема', max_length=100, default='')
text = models.TextField('Текст')
date_and_time = models.DateTimeField('Дата и время')
def __str__(self):
return self.title
class Meta:
verbose_name = 'Текст'
verbose_name_plural = 'Тексты'
views.py:
def adding_text(request):
error = ''
if request.method == 'POST':
form = TextsForm(request.POST)
if form.is_valid():
form.save()
else:
error = 'Форма была заполнена неверно, повторите ввод'
return redirect('texts')
form = TextsForm()
data = {
'form': form
}
return render(request, 'adding_text.html', data)