如何在不为每个模型创建一个方法的情况下保存模型中的当前用户?有一种动态的方法来实现所有范围的这一点吗?有些是这样的:
class BaseTable(models.Model):
created_at = models.DateTimeField(auto_now_add=True, editable=False)
modified_at = models.DateTimeField(auto_now=True, editable=False)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, related_name='%(class)s_createdby', editable=False)
modified_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT ,related_name='%(class)s_modifiedby', editable=False)
class Meta:
abstract = True
并且我将新模型扩展到BaseTable
class Clients(BaseTable):
first_name = models.CharField(max_length=50,verbose_name='Nome')
last_name = models.CharField(max_length=50, verbose_name='Sobrenome')
我的问题是:每次我需要在所有模型中重写save()
方法:Clients, Invoices, Checkout
来设置ModelAdmin
中的当前用户,还是有其他方法来简化这个过程?
我使用的是:
admin.py
@admin.register(Clients)
class ClientsAdmin(admin.ModelAdmin):
model = Clients
def save_model(self, request, obj, form, change):
obj.created_by = request.user
obj.modified_by = request.user
super().save_model(request, obj, form, change)
这很管用。但是如果一个有20个模型呢?我需要逐个覆盖所有的save_model方法吗?没有更有活力的了吗?
https://stackoverflow.com/questions/52862227
复制相似问题