django - 通过 user_id 从数据库中过滤结果
问题描述
大家好,我几天来一直在尝试解决这个问题,但是我真的不确定我的错误在哪里。我是 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 添加到特定视图的顶部。我将不胜感激有关此问题的任何帮助。谢谢你们。
解决方案
改变这个
ticker = Portfolio.objects.filter(pk = request.user.id)
到
ticker = Portfolio.objects.filter(user = request.user)
这应该返回当前用户添加的所有代码。
推荐阅读
- reactjs - 无法读取未定义的属性“文件”以发送多个图像
- javascript - 从 FileReader.readAsText 结果中删除损坏的文本
- php - 无法连接到邮件服务器 PHP
- javascript - 使用 JavaScript DOM 动态包含 jsp 文件
- docker - 无法从不安全的私有注册表中将图像拉入 minikube - http:服务器向 HTTPS 客户端提供 HTTP 响应
- php - 如何通过 kreait/firebase-php 创建数据消息
- excel - 在 Excel 2013 中使用自动填充 VBA 更新结构化表引用
- docker - 如何使用 puckel/气流图像运行回填作业
- javascript - 在分层数组中深度查找、删除、更新
- java - Spring Webflux - 真实硬件核心和虚拟核心之间的事件循环性能