簡體   English   中英

在這種情況下,如何將數據從views.py移動到python / django中的models.py?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM