首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ModelAdmin中创建动态保存到models和save_model中的方法来获取和设置当前用户。

如何在ModelAdmin中创建动态保存到models和save_model中的方法来获取和设置当前用户。
EN

Stack Overflow用户
提问于 2018-10-18 03:24:38
回答 1查看 138关注 0票数 0

如何在不为每个模型创建一个方法的情况下保存模型中的当前用户?有一种动态的方法来实现所有范围的这一点吗?有些是这样的:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
@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方法吗?没有更有活力的了吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52862227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档