我想将Django管理界面用于一个非常简单的Web应用程序,但我无法解决一个不应该难以解决的问题。
请考虑以下事项:
class Contact(models.Model):
name = models.CharField(max_length=250, blank=False)
created_by = models.ForeignKey(User, blank=False)
我找不到自动填充created_by字段并让Django管理员知道它的方法。我见过的大多数方法都意味着重载了Object的save方法并将其传递给请求用户。它们都需要构建您的自定义视图和/或表单。
最好在管理网站中创建新联系人的表单不应显示created_by字段(这很容易)并使用当前用户自动填充它(这似乎比应该更难)
答案 0 :(得分:27)
http://code.djangoproject.com/wiki/CookBookNewformsAdminAndUser
涉及在ModelAdmin对象上实现保存方法。
答案 1 :(得分:4)
您需要为该字段指定default,在这种情况下是一个获取当前用户的方法调用(请参阅auth文档以获取当前用户)。
答案 2 :(得分:1)
我真的想要一个比我在其他地方找到的更好的解决方案,所以我在Populate user Id question上写了一些中间件 - 实现。我的解决方案不需要更改任何表单或视图。
答案 3 :(得分:0)
另一种方法可能是:
author = models.ForeignKey('auth.User',on_delete = models.CASCADE)
注意:这是参考Django 1.11。不能说它可以与其他版本一起使用。