Невозможно найти новые сохраненные экземпляры в базе данных - PullRequest
0 голосов
/ 27 декабря 2018

Я делаю приложение для портфолио в качестве личного проекта.У меня есть форма StockSymbolForm, используемая для покупки акций.У него есть поля: username, stock_symbol и stock_qty.

Я установил username, чтобы быть текущим пользователем, который в данный момент использует приложение - поэтому им нужно только заполнить stock_symbol и stock_qty.

После отправки действительной формы я захожу на страницу администратора для проверки, но я не вижу своих новых stock_symbol и stock_qty, добавленных в мою модель.

Вот мой код:

views.py :

class PortfolioStockListView (ListView): model = StockPortfolio template_name = 'stocks.html'

def post(self, request):
    current_user = StockPortfolioUser.objects.filter(username=request.user).first()

if request.method == 'POST':
    symbol_form = StockSymbolForm(request.POST, initial={'username': current_user})

    if symbol_form.is_valid():
        symbol_form = StockSymbolForm(request.POST, instance=current_user)
        model_instance = symbol_form.save(commit=True)
        model_instance.timestamp = timezone.now()
        model_instance.save()
        return redirect('/')
    else:   
        return render(request, 'stocks.html', {'symbol_form': symbol_form})

else:
    symbol_form = StockSymbolForm()

return render(request, 'stocks.html', {'symbol_form': symbol_form})

models.py :

class StockPortfolioUser(models.Model):
    username = models.OneToOneField(User, on_delete=models.CASCADE)
    usercash = models.PositiveIntegerField(default=100000)

class StockPortfolio(models.Model):
    username = models.ForeignKey(StockPortfolioUser, on_delete=models.CASCADE)
    stock_symbol = models.CharField(max_length=5)
    stock_qty = models.PositiveIntegerField(default=0)

forms.py :

класс StockSymbolForm (ModelForm):

class Meta:
    model = StockPortfolio
    fields = ('stock_symbol' , 'stock_qty')
    labels = {'stock_symbol': 'Stock Symbol', 'stock_qty': 'Quantity'}

Как правильно сохранить экземпляр модели?а почему не экономит в данный момент?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

В вашем views.py файле измените это

model_instance = symbol_form.save(commit=False)
model_instance.username = request.user.id
model_instance.timestamp = timezone.now()
model_instance.save()

В StockSymbolForm измените это

fields = ('username', 'stock_symbol' , 'stock_qty')
0 голосов
/ 27 декабря 2018

Ну, вы, кажется, никогда не устанавливаете имя пользователя.Вы устанавливаете временную метку, которая не существует как поле, но не является полем фактического имени пользователя.

    model_instance = symbol_form.save(commit=True)
    model_instance.userame = request.user
    model_instance.save()

Кроме того, это поле должно называться user, так как оно указывает на всего пользователяобъект не просто имя пользователя.

...