我正在尝试存储当前登录的用户的用户名,当他们在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
关于如何获取用户名以保存的任何建议都会非常有用。
提前致谢
答案 0 :(得分:1)
该声明在模型定义中没有任何意义。它可能“工作”,从某种意义上说,你得到一个与User.username具有相同属性的字段,但它没有做任何有用的事情;您也可以直接将其定义为models.CharField
。
相反,您需要从Transfer到User定义ForeignKey,并将其命名为user
;有很多关于如何做到这一点的文档,还有很多关于如何在表单提交时自动填写用户字段的问题。