2010-08-22 9 views
9

Nauczyłem niektóre podstawowe w Django ale stucked w tym tutorialu:Jak importować moduł datetime w Django?

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

błędów znalezionych podczas was_published_today dodania:

global name 'datetime' is not defined 

Niektóre wyniki wyszukiwania zasugerować mi zaimportować moduł datetime, ale mam nie mam pojęcia, jak to zrobić.

from django.db import datetime w polls/admin.py lub polls/models.py wydaje się bezużyteczne

To 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' 
) 

To 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() 

To 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

opieka zaakceptować odpowiedź. – Mutant

Odpowiedz

6

W polls/models.py trzeba dodać import datetime w taki sam sposób jak from django.db import models.

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

Nie można dodać tego w sformatowanego tekstu, aby odpowiedzieć @ Zack, ale to będzie wyglądać:

polls/models.py

from django.db import models 
import datetime 

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

musiałem importować modułu strefy czasowej w polls/models.py

from django.utils import timezone 

w mojej wersji django/python datetime nie zapewnia wsparcia czasowej

+4

samo tutaj, obie linie były wymagane, aby usunąć błędy z następujących samouczek Django: 'from django.utils import timezone' i ' import datetime' –

4

Można spróbować dodać to, import datetime może być w stanie could'nt pracy:

from datetime import datetime 
Powiązane problemy