[英]How can I move data from views.py to a models.py in python/django in this case?
我將這些文件按數據傳輸的順序排列。 首先,用戶通過Charfield在添加文件上提交報價器。 然后,add函數通過提交代碼值創建分數類的實例,該實例有效。 我也在add中計算點,但是我也找不到在模型中將點發送給類的方法。
我在StackOverflow上看到的所有示例通常在類中都有與某些CharField或ForeignKey相關的變量。 那么可以將分數發送到score()嗎?
我也知道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)
創建分數時,只需將其放入分數對象即可。
在scores.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)
看來您只是想尋找一種將積分存儲在記分板上的方法。 如果是這樣,那么您應該將分數添加為整數/小數字段,然后讓模型為您處理存儲。
像這樣:
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)
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)
或對於整數:
class score(models.Model):
ticker = models.CharField(max_length=10) points = models.IntegerField() created_at = models.DateTimeField(default=datetime.now, blank=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.