Javascript Django REST框架更新日期已创建
我有一个连接到Django REST框架API的博客应用程序。我可以使用API调用创建、删除和更新帖子,但我很难更新“创建时间”字段。我想做的是在编辑文章时用当前时间更新时间。因此,如果该帖子是在2020年7月21日晚上10点创建的,然后在2020年7月21日晚上10:05进行编辑,我希望时间根据编辑时间进行更改。有没有关于我如何做到这一点的想法。我正在使用这个获取调用来进行更新Javascript Django REST框架更新日期已创建,javascript,django,django-rest-framework,Javascript,Django,Django Rest Framework,我有一个连接到Django REST框架API的博客应用程序。我可以使用API调用创建、删除和更新帖子,但我很难更新“创建时间”字段。我想做的是在编辑文章时用当前时间更新时间。因此,如果该帖子是在2020年7月21日晚上10点创建的,然后在2020年7月21日晚上10:05进行编辑,我希望时间根据编辑时间进行更改。有没有关于我如何做到这一点的想法。我正在使用这个获取调用来进行更新 var url = "http://127.0.0.1:8000/api/blogs/";
var url = "http://127.0.0.1:8000/api/blogs/";
var type = "POST";
if (active != null) {
url = `http://127.0.0.1:8000/api/blogs/${active.id}/`;
type = "PUT";
}
fetch(url, {
method: type,
headers: {
"Content-type": "application/json",
"X-CSRFToken": csrftoken,
},
body: JSON.stringify({
'title': form.title.value,
'body': form.body.value,
'user': user,
})
}).then(function (response) {
handlePosts()
location.reload()
form.reset()
})
})
我试着把新的日期()发送到尸体上,但似乎不起作用。
如果在注释中添加下面的保存方法,则这是my models.py:
class BlogModel(models.Model):
user = models.ForeignKey(
UserModel, on_delete=models.SET_NULL, null=True, blank=True)
title = models.CharField(max_length=200, null=True, blank=True)
body = models.CharField(max_length=1000, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def __str__(self):
return str(self.user) + ", " + str(self.title)
def save(self, *args, **kwargs):
self.created = timezone.now()
return super().save(*args, **kwargs)
我最初的想法是,我需要覆盖仍在使用的viewset的save方法。。。
感谢您的帮助:D要更新创建的时间字段,您可以覆盖posts模型的
save()
方法以节省时间。您不需要从前端发送此信息。例如:
from django.utils import timezone
class Post(models.Model):
...
fields
...
def save(self, *args, **kwargs):
self.time_created_field = timezone.now()
return super().save(*args, **kwargs)
试试这段代码,它会工作的,因为您正在尝试一个PUT请求听起来不错,但当我实现这个保存方法时,它不会在all@adamkb96请将模型和保存方法添加到问题中
class BlogModel(models.Model):
user = models.ForeignKey(
UserModel, on_delete=models.SET_NULL, null=True, blank=True)
title = models.CharField(max_length=200, null=True, blank=True)
body = models.CharField(max_length=1000, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def __str__(self):
return str(self.user) + ", " + str(self.title)
def save(self, *args, **kwargs):
if self.pk:
self.created = timezone.now()
super().save(*args, **kwargs)