2016-03-23 10 views
-1

Ich lese http://www.tangowithdjango.com/book17/chapters/models.html, und versuche, Übung zu implementieren. Die Übung ist:Ein Attribut wird aktualisiert, andere ist nicht

Aktualisieren Sie Ihre Population Skript so, dass der Python Kategorie hat 128 Ansichten und 64 positiven Bewertungen, die Django Kategorie gibt es insgesamt 64 Ansichten und 32 gefällt und die andere Frameworks Kategorie hat 32 Aufrufe und 16 mag.

Also, ich tat die gleiche Bevölkerungs Skript:

def add_cat(name,likes,views): 
c = Category.objects.get_or_create(name=name)[0] 
c.likes = likes 
print c.likes 
c.views = views 
return c 

Das gesamte Skript ist:

import os 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tango_with_django_project.settings') 

import django 
django.setup() 

from rango.models import Category, Page 


def populate(): 
    python_cat = add_cat('Python',64,128) 

    add_page(cat=python_cat, 
     title="Official Python Tutorial", 
     url="http://docs.python.org/2/tutorial/") 

    add_page(cat=python_cat, 
     title="How to Think like a Computer Scientist", 
     url="http://www.greenteapress.com/thinkpython/") 

    add_page(cat=python_cat, 
     title="Learn Python in 10 Minutes", 
     url="http://www.korokithakis.net/tutorials/python/") 

    django_cat = add_cat("Django",32,64) 

    add_page(cat=django_cat, 
     title="Official Django Tutorial", 
     url="https://docs.djangoproject.com/en/1.5/intro/tutorial01/") 

    add_page(cat=django_cat, 
     title="Django Rocks", 
     url="http://www.djangorocks.com/") 

    add_page(cat=django_cat, 
     title="How to Tango with Django", 
     url="http://www.tangowithdjango.com/") 

    frame_cat = add_cat("Other Frameworks",16,32) 

    add_page(cat=frame_cat, 
     title="Bottle", 
     url="http://bottlepy.org/docs/dev/") 

    add_page(cat=frame_cat, 
     title="Flask", 
     url="http://flask.pocoo.org") 

    # Print out what we have added to the user. 
    for c in Category.objects.all(): 
     for p in Page.objects.filter(category=c): 
      print "- {0} - {1}".format(str(c), str(p)) 

def add_page(cat, title, url, views=0): 
    p = Page.objects.get_or_create(category=cat, title=title)[0] 
    p.url=url 
    p.views=views 
    p.save() 
    return p 

def add_cat(name,likes,views): 
c = Category.objects.get_or_create(name=name)[0] 
c.likes = likes 
print c.likes 
c.views = views 
return c 

# Start execution here! 
if __name__ == '__main__': 
    print "Starting Rango population script..." 
    populate() 

Nun, ich die Werte des beide mag & Ansichten drucken mag:

>>> c = Category.objects.get(pk = 3) 
>>> c 
<Category: Python> 
>>> c.likes 
0 
>>> c.views 
128 
>>> 

Der Wert von Likes tun Es ändert sich nicht, während die Ansichten aktualisiert werden.

Antwort

0

Sie müssen das Objekt speichern, um weitere Informationen überprüfen this

def add_cat(name,likes,views): 
    c = Category.objects.get_or_create(name=name)[0] 
    c.likes = likes 
    print c.likes 
    c.views = views 
    c.save() 
    return c 
+0

Bitte erläutern Sie ein wenig. Warum muss ich für Likes speichern, aber nicht für Ansichten? – learner

+0

Sie speichern das 'c'-Objekt (das sowohl' Likes'- als auch 'View'-Eigenschaften von jedem speichert) – rnevius

+0

aber ohne Speichern der Ansichten funktioniert gut. Warum funktioniert es für Ansichten? – learner

Verwandte Themen