我在django中实现了令牌身份验证,我的模型看起来像 -
class Portfolio(models.Model):
owner = models.ForeignKey(User, verbose_name='User', null=True)
company = models.TextField(null=True)
volume = models.IntegerField(blank=True)
date = models.DateField(null=True)
为了保存在这个模型中,我在视图中有以下内容 -
arr = []
contents = request.data
user = User.objects.filter(username=request.user)
user_is = User(username=user)
for i in range(0, len(portfolio_contents)):
line = portfolio_contents[i].split(",")
get_isin = Endday.objects.get(company=line[0])
datestuff = line[2]
datestuff = datestuff[0:10]
arr.append(Portfolio(owner=user_is, company=line[0], volume=line[1], date=datestuff))
Portfolio.objects.bulk_create(arr)
此代码保存数据,但当我尝试查看数据时,我得到了这个 -
[
{
"company": "BAL",
"volume": 1425,
"date": "2014-02-19",
"owner": null
},
{
"company": "RLD",
"volume": 2245,
"date": "2014-02-19",
"owner": null
},
所有者不应 null ,因为如果我尝试print(user.username)
,则会打印<QuerySet [<User: ku>]>
。
什么似乎是问题?
答案 0 :(得分:0)
您的user_is
是User
模型实例,该实例未在数据库中保存:
user_is = User(username=user) # ??? username != user
为什么不这样做:
user_is = User.objects.get(username=request.user.username)
或者在循环中的owner=request.user
字段中设置ForeignKey
。
答案 1 :(得分:0)
这是因为你没有保存你的用户,例如它在数据库中没有id。
您还需要一个User
个实例,而不是QuerySet
来调用User.objects.filter(username=request.user)
。
尝试:
user_is = User.objects.get(username=request.user.username)