首页 > 解决方案 > 如何从对象的形式更新 time_update?

问题描述

如何从附加到主帖子的对象(文件)的形式更新 time_update?

楷模:

# Main
class File(BasePost):
   title = models.CharField(max_length=255, verbose_name=_('Заголовок'), blank=True)
time_update = models.DateTimeField(auto_now=True) # it is necessary to update this time when adding a nested attachment 

# Attachment   
class Attachment(models.Model):
        post = models.ForeignKey('File', verbose_name=_('Файл'), related_name='attachment', on_delete=models.CASCADE)
        # Created user
        created_by = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('Добавил'), on_delete=models.SET_DEFAULT, default=1)
        is_published = models.BooleanField(default=True, verbose_name=_('Опубликовано'))
        # Times
        time_create = models.DateTimeField(auto_now_add=True, verbose_name=_('Дата добавления'))
        time_update = models.DateTimeField(auto_now=True, verbose_name=_('Дата обновления'))

意见

# Attachment 
class AttachmentFileCreateView(SuccessMessageMixin, CreateView):
    model = Attachment
    template_name = 'modules/files/attachment_create.html'
    form_class = AttachmentForm
    success_message = "Файл для поста успешно добавлен!"

    def form_valid(self, form):
        form.instance.created_by = self.request.user
        form.instance.post_id = self.kwargs['pk']
        #? how to update time_update included in the post? 
        print(form.cleaned_data)
        return super().form_valid(form)

    def get_success_url(self):
        return reverse_lazy('files:file_detail',
                            kwargs={'cat_slug': self.object.file.category.slug, 'slug': self.object.file.slug})

希望有答案)

标签: pythondjango

解决方案


# Importing timezone
from django.utils import timezone

在你的form_valid方法中

def form_valid(self, form):
    form.instance.created_by = self.request.user
    form.instance.post_id = self.kwargs['pk']
    form.instance.time_update = timezone.now() 
    print(form.cleaned_data)
    return super().form_valid(form)

已添加form.instance.time_update = timezone.now()假设字段为time_update.


推荐阅读