25

我想将 Django 管理界面用于一个非常简单的 Web 应用程序,但我无法解决一个不应该那么难解决的问题..

考虑以下:

class Contact(models.Model):
    name = models.CharField(max_length=250, blank=False)
    created_by = models.ForeignKey(User, blank=False)

我找不到自动填充 created_by 字段并让 Django 管理员知道它的方法。我见过的大多数方法都意味着重载对象的保存方法并将其传递给请求用户。他们都需要构建您的自定义视图和/或表单。

最佳情况下,在管理站点中创建新联系人的表单不应显示 created_by 字段(这很容易)并使用当前用户自动填充它(这似乎比它应该更难)。

4

3 回答 3

28

http://code.djangoproject.com/wiki/CookBookNewformsAdminAndUser

涉及在您的 ModelAdmin 对象上实现保存方法。

于 2009-05-13T02:50:42.297 回答
4

您需要为该字段指定一个默认值,在这种情况下是获取当前用户的方法调用(请参阅 auth 文档以获取当前用户)。

于 2009-05-13T03:04:21.627 回答
1

我真的想要一个比我在其他地方找到的更好的解决方案,所以我在Populate user Id question上写了一些中间件实现。我的解决方案不需要更改任何形式或视图。

于 2012-10-19T15:40:43.377 回答