在这种情况下,如何将views.py中的数据移动到python / django中的models.py?

时间:2018-01-10 21:09:28

标签: python django

我按照数据传输的顺序放置这些文件。首先,用户通过添加文件上的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)

2 个答案:

答案 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)