我按照数据传输的顺序放置这些文件。首先,用户通过添加文件上的Charfield提交一个滚动条。然后,add函数通过提交有效的ticker值来创建score类的实例。我还计算了添加点数,但我也想不出一种方法可以在模型中向类中发送点数。
我在StackOverflow上看到的所有示例通常都有类中的变量与某些CharField或ForeignKey相关。那么有可能将分数发送到得分()?
我也知道scoreCalculate有效。
此代码生成的错误:
File "~/models.py", line 6, in score
points;
NameError: name 'points' is not defined
当然它没有定义,我只是不确定将它定义为什么。
add.html
<form action="{% url 'add' %}" method="post">
{% csrf_token %}
<label for="ticker">Ticker</label><br />
<input type="text" name="ticker" id="ticker"/>
<br><br>
<input type="submit" value="submit" />
</form>
views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import score
from Rssfeed import scoreCalculate
def add(request):
if(request.method == 'POST'):
ticker = request.POST['ticker']
pts = scoreCalculate(ticker=ticker)
sc = score(ticker = ticker)
sc.save()
return redirect('/')
else:
return render(request, 'add.html')
models.py
from django.db import models
from datetime import datetime
class score(models.Model):
ticker = models.CharField(max_length=10)
points; #not sure what to put here
created_at = models.DateTimeField(default=datetime.now, blank=True)
答案 0 :(得分:0)
创建时,只需将点放入乐谱对象中即可。
在views.py中,在创建score
对象时使用以下行:
sc = score(ticker=ticker, points=pts)
在models.py中,在分数模型中使用以下字段:
class score(models.Model):
ticker = models.CharField(max_length=10)
points = models.IntegerField()
created_at = models.DateTimeField(default=datetime.now, blank=True)
答案 1 :(得分:0)
看起来您只是想找到一种方法将积分存储在记分板中。如果这是真的,那么您应该将分数添加为整数/小数字段,让模型为您处理存储。
这样的事情:
class score(models.Model):
ticker = models.CharField(max_length=10)
points = models.DecimalField(max_digits=3, decimal_places=1)
created_at = models.DateTimeField(default=datetime.now, blank=True)
ticker = models.CharField(max_length=10)
points = models.DecimalField(max_digits=3, decimal_places=1)
created_at = models.DateTimeField(default=datetime.now, blank=True)
或者对于整数:
class score(models.Model):
ticker = models.CharField(max_length=10)
points = models.IntegerField()
created_at = models.DateTimeField(default=datetime.now, blank=True)