【问题标题】:How do I get the current "username" in django 1.10?如何在 django 1.10 中获取当前的“用户名”?
【发布时间】:2017-06-03 18:54:15
【问题描述】:

我正在尝试用 django 1.10 中的当前用户名填充模型中的一个字段。

这是我正在使用的代码。

class Archivo(models.Model):
    nombre = models.CharField(max_length = 30)
    documento = models.FileField()
    fecha_creacion = models.DateField(default = timezone.now)
    observaciones = models.CharField(max_length = 20)
    usuario = models.CharField(User.get_username())
    transferencia = models.ForeignKey(User)

我要填写的字段是“usuario”

我收到下一个错误: TypeError: get_username() missing 1 required positional argument: 'self'

我做错了吗?顺便说一句,我没有使用视图,我正在尝试直接从管理站点执行此操作。

我发布这张图片作为我正在尝试做的示例,“Usuario”字段应该自动填充“ROBERTO”...

【问题讨论】:

标签: python django django-models django-admin


【解决方案1】:

请将代码发布为文本而不是图像。您不能添加这样的用户名。您真正应该做的是为 User 模型创建一个 ForeingKey 或 OneToOneField。在您的 Archivo 模型中输入用户名是错误的。那么您的模型和您的 Archivo 模型之间没有明确的关系。这意味着您无法使用 Django 提供的大量功能来处理相关模型。

其次,如果用户名发生变化怎么办?你的档案模型会发生什么?他们被悬空了。

Class Archivo(models.Model)
    usero = models.ForeignKey(User)
    ...

那么当你需要保存一个Archivo对象的时候,你需要从request.user中抓取它

if request.user.is_authenticate():

   arch = Archivo.objects.create(user=request.user, ... )

【讨论】:

  • 代码现在是文本。我会尝试解释我想做什么......我想用我当前的用户填写字段“usuario”,例如“betofm92”是管理员,我想填写它。有可能吗?
猜你喜欢
  • 2022-10-15
  • 2013-10-18
  • 2018-10-03
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 2022-06-30
  • 2022-06-10
  • 2021-11-20
相关资源
最近更新 更多