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
Вернуться на верх