在django上提交表单时添加用户名

时间:2016-01-28 08:56:12

标签: python django forms django-models model

我正在尝试存储当前登录的用户的用户名,当他们在django网站上提交表单上的信息时。

这是我的models.py文件到目前为止的样子:

from django.db import models
from django.contrib.auth.models import User

class Transfer(models.Model):
    id = models.AutoField(primary_key=True)
    username = User._meta.get_field('username')
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
然而,这似乎不起作用。迁移等工作正常并且服务器运行,但是当我在表单上提交信息时,我收到以下错误:

Exception Type: IntegrityError
Exception Value: UNIQUE constraint failed: transfer_transfer.username

关于如何获取用户名以保存的任何建议都会非常有用。

提前致谢

1 个答案:

答案 0 :(得分:1)

该声明在模型定义中没有任何意义。它可能“工作”,从某种意义上说,你得到一个与User.username具有相同属性的字段,但它没有做任何有用的事情;您也可以直接将其定义为models.CharField

相反,您需要从Transfer到User定义ForeignKey,并将其命名为user;有很多关于如何做到这一点的文档,还有很多关于如何在表单提交时自动填写用户字段的问题。