2010-08-22 7 views
9

Ich habe einige grundlegende in Django gelernt, aber ich in diesem Tutorial stucked:Wie wird das Datetime-Modul in Django importiert?

http://docs.djangoproject.com/en/dev/intro/tutorial02/#customize-the-admin-change-list 

gefunden Fehler beim was_published_today hinzugefügt:

global name 'datetime' is not defined 

Einige Suchergebnisse deuten darauf hin, mir Datetime-Modul zu importieren, aber ich habe keine Ahnung, wie es geht.

from django.db import datetime in polls/admin.py oder polls/models.py scheint nutzlos

Dies ist settings.py:

# Django settings for kaka project. 

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

ADMINS = (
    # ('Your Name', '[email protected]'), 
) 

MANAGERS = ADMINS 

DATABASE_ENGINE = 'mysql'   # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
DATABASE_NAME = 'kaka'    # Or path to database file if using sqlite3. 
DATABASE_USER = 'root'    # Not used with sqlite3. 
DATABASE_PASSWORD = 'z'   # Not used with sqlite3. 
DATABASE_HOST = ''    # Set to empty string for localhost. Not used with sqlite3. 
DATABASE_PORT = ''    # Set to empty string for default. Not used with sqlite3. 

# Local time zone for this installation. Choices can be found here: 
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name 
# although not all choices may be available on all operating systems. 
# If running in a Windows environment this must be set to the same as your 
# system time zone. 
TIME_ZONE = 'America/Chicago' 

# Language code for this installation. All choices can be found here: 
# http://www.i18nguy.com/unicode/language-identifiers.html 
LANGUAGE_CODE = 'en-us' 

SITE_ID = 1 

# If you set this to False, Django will make some optimizations so as not 
# to load the internationalization machinery. 
USE_I18N = True 

# Absolute path to the directory that holds media. 
# Example: "/home/media/media.lawrence.com/" 
MEDIA_ROOT = '' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com", "http://example.com/media/" 
MEDIA_URL = '' 

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a 
# trailing slash. 
# Examples: "http://foo.com/media/", "/media/". 
ADMIN_MEDIA_PREFIX = '/media/' 

# Make this unique, and don't share it with anybody. 
SECRET_KEY = '5vqk*i^#8%[email protected]*0e6#uons*+gb^iakgg8y$(' 

# List of callables that know how to import templates from various sources. 
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.load_template_source', 
    'django.template.loaders.app_directories.load_template_source', 
#  'django.template.loaders.eggs.load_template_source', 
) 

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
) 

ROOT_URLCONF = 'kaka.urls' 

TEMPLATE_DIRS = (
    "/var/mycode/cina", # Change this to your own directory. 
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
) 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'kaka.polls', 
    'django.contrib.admin' 
) 

Dies ist polls/models.py:

from django.db import models 

class Poll(models.Model): 
    # ... 
    def __unicode__(self): 
     return self.question 
    question = models.CharField(max_length=200) 
    def was_published_today(self): 
     return self.pub_date.date() == datetime.date.today() 
    was_published_today.short_description = 'Published today?' 
    pub_date = models.DateTimeField('date published') 

class Choice(models.Model): 
    # ... 
    def __unicode__(self): 
     return self.choice 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField() 

Dies ist polls/admin.py:

from kaka.polls.models import Poll 
from kaka.polls.models import Choice 
from django.contrib import admin 

class ChoiceInline(admin.TabularInline): 
    model = Choice 
    extra = 3 
class PollAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['question']}), 
     ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), 
    ] 
    list_display = ('question', 'pub_date', 'was_published_today') 
    inlines = [ChoiceInline] 
    list_filter = ['pub_date'] 
    search_fields = ['question'] 
    date_hierarchy = 'pub_date' 
admin.site.register(Poll, PollAdmin) 

admin.site.register(Choice) 
+0

Sorgfalt die Antwort zu akzeptieren. – Mutant

Antwort

6

In polls/models.py müssen Sie import datetime in der gleichen Weise wie from django.db import models hinzuzufügen.

from django.db import models 
import datetime     # < add it here 

class Poll(models.Model): 
    # ... 
    def __unicode__(self): 
     return self.question 
    question = models.CharField(max_length=200) 
    def was_published_today(self): 
     return self.pub_date.date() == datetime.date.today() 
    was_published_today.short_description = 'Published today?' 
    pub_date = models.DateTimeField('date published') 

class Choice(models.Model): 
    # ... 
    def __unicode__(self): 
     return self.choice 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField() 
1

dies könnte in formatierten Text @ zack Antwort nicht hinzufügen, aber es würde so aussehen:

polls/models.py

from django.db import models 
import datetime 

class Poll(models.Model): 
    # ... 
    def __unicode__(self): 
     return self.question 
7

ich die Zeitzone Modul zu importieren, benötigen in

Umfragen/models.py
from django.utils import timezone 

in meiner Version von django/python Datetime bietet keine Zeitzone Unterstützung

+4

Hier waren beide Zeilen erforderlich, um Fehler beim Folgen des Django-Lernprogramms zu entfernen: 'from django.utils import timezone' und ' import datetime' –

4

Sie können versuchen, diese hinzuzufügen, können Importdatetime could'nt Arbeit der Lage sein:

from datetime import datetime