Django使用用户字段保存在模型中

时间:2016-09-21 14:15:25

标签: python django

我在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>]>

什么似乎是问题?

2 个答案:

答案 0 :(得分:0)

您的user_isUser模型实例,该实例未在数据库中保存

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)