您好,我已经尝试了好几天来解决此问题,但是我真的不确定我的错误在哪里。我是django的新手,已经编码了一年。 我有一个包含投资报价的模型组合,并且还通过外键链接到用户。在我的模型中
class Portfolio(models.Model):
ticker = models.CharField(max_length=15)
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='investor', null=True)
def __str__(self):
return self.ticker
我的表单是这样的
class PortfolioForm(forms.ModelForm):
class Meta():
model = Portfolio
fields = ['ticker']
def __init__(self, user, *args, **kwargs):
super(PortfolioForm, self).__init__(*args, **kwargs)
self.fields['ticker'].queryset = Portfolio.objects.filter(user=user)
在我看来:
if request.method == 'POST':
form = PortfolioForm(request.POST or None, request.user)
if form.is_valid():
ticker = form.save(commit=False)
ticker.user = request.user
ticker.save()
return redirect('/add_stock')
else:
ticker = Portfolio.objects.filter(pk = request.user.id)
output = []
for ticker_item in ticker:
output.append(str(ticker))
return render(request, 'test_app/add_stock.html', {'ticker':ticker, 'output':output})
我希望用户将股票添加到“投资组合”数据库中,但只返回他们添加的股票报价器。当前,库存正在添加到数据库中,但是什么也没有返回给用户。另外,添加到数据库的库存也可用于任何用户,而不仅限于特定的登录用户。我已经在特定视图的顶部添加了@login_required。非常感谢您对此问题的帮助。谢谢你们。
答案 0 :(得分:0)
更改此
ticker = Portfolio.objects.filter(pk = request.user.id)
到
ticker = Portfolio.objects.filter(user = request.user)
这应该返回当前用户添加的所有代码。