2010-08-22 35 views
9

Tôi đã học được một số cơ bản trong Django nhưng tôi stucked trong hướng dẫn này:Làm thế nào để nhập mô-đun datetime trong Django?

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

Lỗi được tìm thấy khi was_published_today thêm:

global name 'datetime' is not defined 

Một số kết quả tìm kiếm gợi ý cho tôi import module datetime, nhưng tôi có không có ý tưởng làm thế nào để làm điều đó.

from django.db import datetime trong polls/admin.py hoặc polls/models.py dường như vô dụng

Đây là 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' 
) 

Đây là 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() 

Đây là 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

chăm sóc để chấp nhận câu trả lời. – Mutant

Trả lời

6

Trong polls/models.py bạn cần phải thêm import datetime theo cách tương tự như 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

Không thể thêm này trong định dạng văn bản để trả lời @ Zack, nhưng nó sẽ trông giống như:

các cuộc thăm dò/models.py

from django.db import models 
import datetime 

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

tôi cần thiết để nhập khẩu các mô-đun múi giờ trong polls/models.py

from django.utils import timezone 

trong phiên bản django/python datetime của tôi không cung cấp hỗ trợ múi giờ

+4

cùng ở đây, cả hai dòng được yêu cầu để loại bỏ lỗi từ sau hướng dẫn Django: 'từ django.utils nhập múi giờ' và ' nhập datetime' –

4

Bạn có thể cố gắng thêm này, nhập khẩu datetime có thể có khả năng làm việc could'nt:

from datetime import datetime 
Các vấn đề liên quan