2017-04-02 12 views
1

別のPythonスクリプトで条件文を使用してデータを追加する方法を目的/意思ジャンゴ -

私は結果がsqlite3のデータベースであることをDjangoのモデルを作成しました。私は今、別のpythonスクリプトを使用して、そのデータベースにいくつかの条件付きロジックに基づいて追加したいと思っています。

問題

私はデータベースに問い合わせをして、別のPythonスクリプトを使用して、その尋問からの戻り結果に基づいて、いくつかの値を追加する方法を確認していないので、私はジャンゴとPythonに新しいです。

これは私のModels.pyです:

from django.db import models 
from django.utils import timezone 
from django.core.urlresolvers import reverse 
from django.contrib.auth.models import User 

# Create your models here. 
class Author(models.Model): 
    ''' 
    Model representing the Author of the stocknote. 
    ''' 
    user_id = models.ForeignKey('auth.User') 
    name = models.CharField(max_length=100) 

    def __str__(self): 
     return self.name 

class Stock(models.Model): 
    ''' 
    Model representing the stock info. 
    ''' 
    author = models.ForeignKey(Author) 
    ticker_code = models.CharField(max_length=10, null=True, blank=True) 
    latest_stock_price = models.DecimalField(max_digits=20, decimal_places=4, null=True, blank=True) 
    datetime_of_last_quote = models.DateTimeField(default=timezone.now) 

    def __str__(self): 
     return self.ticker_code 

class Note(models.Model): 
    ''' 
    Model representing the Authors note. 
    ''' 
    author = models.ForeignKey(Author) 
    note = models.TextField() 
    ticker_code = models.ForeignKey(Stock) 
    date_note_created = models.DateTimeField(default=timezone.now) 
    alert_price = models.DecimalField(max_digits=20, decimal_places=4, null=True, blank=True) 

    def __str__(self): 
     return self.note 

は今それが空であるフィールド「latest_stock_price」以外のすべてのフィールドのデータが含まれているので、私はデータベースにデータを追加している想像してみてください。私は別のPythonスクリプトで何をしたいのか

からinterrogate-db.pyそれを呼び出すことができますが - そのようにプログラムによるロジックを持っている:

If 'GOOG' is in 'ticker_code' then 
    add '1.234' to the latest_stock_price for GOOJ 

私が書き込み、問い合わせ-DBに達成できる最高.pyは、次のとおりです。

import os 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject_project.settings') 
import django 
django.setup() 
from myproject.models import Author, Stock, Note 

def add_latest_price(): 
    for t in Stock.objects.values_list('ticker_code'): 
     if 'GOOJ' in t: 
      ...What goes here?... 

GOOJがトンである場合latest_stock_priceする1.234を追加するための構文がどうあるべきか?

答えて

1
for stock in Stock.objects.all(): 
    if stock.ticker_code == 'GOOJ': 
     stock.latest_stock_price = 1.234 
     stock.save() 

それとも

Stock.objects.filter(ticker_code='GOOJ').update(latest_stock_price=1.234) 
+1

それは 'in'と' = '代わりに' + = 'の代わりに' = 'でなければなりません。 –

+0

ありがとう@AshishNitinPatil私はそれがPythonコードのような条件を取った。 :P –

+0

優秀!私の問題を解決したRaviとAshishのおかげで、ありがとう。 – shaz