繁体   English   中英

Django 在管理面板中自动填充作者字段

[英]Django auto populate author field in admin panel

在我的 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, )

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

提前致谢

我认为您需要的是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 将使用这个命名方案来知道哪个管理模型与哪个模型搭配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM