1

我想知道如何在 Django manage.py控制之外使用模型。

即给出以下教程部分的组合,我将如何能够做到python models.py

# models.py
from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()

if __name__ == "__main__":
    from polls.models import Poll, Choice 
    print Poll.objects.all()
    import datetime
    p = Poll(question="What's up?", pub_date=datetime.datetime.now())
    p.save()
    print p.id
    print p.question
    print p.pub_date
    p.pub_date = datetime.datetime(2007, 4, 1, 0, 0)
    p.save()
    print Poll.objects.all()

我尝试设置os.environ['DJANGO_SETTINGS_MODULE'] = ...我的设置文件,不高兴。然后将其更改为顶部

import imp
imp.find_module('settings') # Assumed to be in the same directory.

from django.core.management import setup_environ
import settings
setup_environ(settings)

但无济于事。

收到任何想法将不胜感激,这似乎是一个典型的用例。


我很欣赏 Django 背后有一个庞大的生态系统,但我期待某种形式的:

set-up-env
do-stuff

无需编写管理脚本。

4

1 回答 1

1

从项目根目录运行它:-它有效:D

import os

import sys

from django.conf import settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)) + '/../')

from django.db import models

class Poll(models.Model):

        question = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
        class Meta:
           app_label = #app_name

你的第二节课

if __name__ == "__main__":

         print Poll.objects.all()
         import datetime
         p = Poll(question="What's up?", pub_date=datetime.datetime.now())
         p.save()
         print p.id
         print p.question
         print p.pub_date
         p.pub_date = datetime.datetime(2007, 4, 1, 0, 0)
         p.save()
         print Poll.objects.all()
于 2013-06-17T10:26:47.437 回答