Привет, есть потребность в таблице БД видеть кто и когда создал запись, а также кто и когда изменял ее.
Пытаюсь сделать через переопределение метода save_model(). Работает только из админки, а через CreateView и UpdateView - нет.
Направьте на путь истинный.
Спасибо.
Django 2.2.2, Python 3.7, Mariadb 10.1
models.py :
class Item(models.Model):
name = models.CharField(max_length = 32)
date_creation = models.DateTimeField(auto_now_add=True)
date_modification = models.DateTimeField(auto_now=True)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name="%(app_label)s_%(class)s_cre_related",
related_query_name="%(app_label)s_%(class)s_cre_s")
modified_by = models.ForeignKey(settings.AUTH_USER_MODEL,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name="%(app_label)s_%(class)s_mod_related",
related_query_name="%(app_label)s_%(class)s_mod_s")
def save_model(self, request, obj, form, change):
if not obj.pk:
obj.created_by = request.user
obj.modified_by = request.user
super().save_model(request, obj, form, change)
def get_absolute_url(self):
return reverse('items_list')
views.py :
class ItemCreateView(CreateView):
model = models.Item
fields = ['name', ]
template_name = 'item_create.html'
class ItemListView(ListView):
model = models.Item
template_name = 'items_list.html'
class ItemUpdateView(UpdateView):
model = models.Item
fields = ['name', ]
template_name = 'item_update.html'
admin.py:
class ItemAdmin(admin.ModelAdmin):
fields = ('name', )
list_display = ('name', 'date_creation', 'created_by', 'date_modification', 'modified_by' )
def save_model(self, request, obj, form, change):
if not obj.pk:
obj.created_by = request.user
obj.modified_by = request.user
super().save_model(request, obj, form, change)
admin.site.register(models.Item, ItemAdmin)
Updated 1 July 2019, 13:46 by BobNew.