【问题标题】:Django auto populate author field in admin panelDjango 在管理面板中自动填充作者字段
【发布时间】:2018-02-05 22:59:22
【问题描述】:

在我的 django 项目中,我有一个带有这样的类的 model.py:

class temp_main(models.Model):
    descr = models.CharField(max_length=200, verbose_name="Description")
    notes = models.TextField(null=True, blank=True, verbose_name="Note")
    dt = models.DateTimeField(auto_now=True)
    #Fields for API permissions
    owner = models.ForeignKey('auth.User', related_name='tmain_owner', on_delete=models.CASCADE, verbose_name="API Owner")

    class Meta:
       verbose_name = '1-Main Template'
       verbose_name_plural = '1-Main Templates'

    def __str__(self):
        return self.descr

我希望在我的管理面板中,所有者字段会自动填充当前登录用户。 在我的 admin.py 我写:

admin.site.register(temp_main, )

如何使用登录用户设置我的所有者字段?

提前致谢

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    我认为您需要的是save_model 方法。以下是它的使用方式(来自文档):

    from django.contrib import admin
    from myproject.myapp.models import Article
    
    class ArticleAdmin(admin.ModelAdmin):
        def save_model(self, request, obj, form, change):
            obj.user = request.user
            super().save_model(request, obj, form, change)
    
    admin.site.register(Article, ArticleAdmin)
    

    我认为您可以将 obj.user 更改为 obj.owner 在您的情况下。这行得通吗?

    另外,我认为您可能希望将temp_main 类的名称更改为TempMain,然后将admin.py 文件中的类命名为TempMainAdmin。 Django 将使用这个命名方案来知道哪个 Admin Model 与哪个模型搭配。

    【讨论】:

      猜你喜欢
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 2010-09-29
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 2019-10-04
      相关资源
      最近更新 更多