Django POSTing a TimeStamp to REST API
Когда я создаю и переношу модель с полем DateTimeField, я могу создать запись в моей базе данных, которая позволяет мне выбрать дату, которую я хочу регистрировать вручную. Теперь я создал метод Post для добавления новых записей в мою базу данных, но как мне автоматически добавить временную метку, как в AutoField 'ID'?
Вы можете использовать поле DateTimeField с функцией auto_now_add в вашей модели в качестве поля created_at для регистрации каждого момента создания объекта
https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.DateField.auto_now_add
например:
class YourModel(models.Model):
created_at = DateTimeField(auto_now_add=True)
updated_at = DateTimeField(auto_now=True)
Для автоматического добавления значения к объекту перед сохранением его в базе данных вы можете переопределить метод модели save()
или предоставить значение перед сохранением формы в базе данных с помощью form.save(commit=false)
:
models.py
class MyModel(models.Model):
name = models.CharField(default='Empty')
date = models.DateTimeField(default=datetime.datetime.now, blank=True)
# Others fields
# Override model save method
def save(self, *args, **kwargs):
# Here you can decide to change the value of a field or add other logic
self.name = 'Overrided name in save method'
super(MyModel, self).save(*args, **kwargs)
views.py
def post_view(request):
if request.method == 'POST':
form = MyModelForm(request.POST)
if form.is_valid():
# Don't save yet because we need to provide the date field
my_object = form.save(commit=False)
my_object.date = datetime.datetime.now()
# Now we can save the object in the database
my_object.save()
else:
# If form is not valid
else:
# If request is not POST