фильтровать результаты из базы данных по user_id - PullRequest
1 голос
/ 19 октября 2019

Здравствуйте, все, что я пытался решить эту проблему в течение нескольких дней, однако я действительно не уверен, где моя ошибка. Я новичок в 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 в начало определенного представления. Буду признателен за любую помощь в этом вопросе. Спасибо вам всем.

1 Ответ

0 голосов
/ 19 октября 2019

Измените это

ticker = Portfolio.objects.filter(pk = request.user.id)

на

ticker = Portfolio.objects.filter(user = request.user)

Это должно вернуть все тикеры, добавленные текущим пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...