2016-09-28 5 views
1

Я просмотрел пример опроса django doc. Теперь у меня есть база данных name.info.db. Я помещал его в тот же каталог, что и manage.py, также где db.sqlite3. я изменил settings.py кне может получить доступ к простой базе данных в django

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.sqlite3', 
    'NAME': os.path.join(BASE_DIR, 'name.info.db'), 
}} 

Мой models.py является

class PItable(models.Model): 
    pid_text = models.CharField(max_length=200) 
    lname_text = models.CharField(max_length=200, null=True) 
    fname_text = models.CharField(max_length=200, null=True) 
    affs_text = models.CharField(max_length=2000, null=True) 
    pmidlist_text = models.CharField(max_length=2000, null=True) 
    clustering_text = models.CharField(max_length=2000, null=True) 
    def __str__(self): 
     return self.fname_text 

Я удалил вопрос и выбор (из примера опросов) из представлений и моделей. я

python manage.py makemigrations pidb 
python manage.py migrate 

я получил следующее сообщение, которое не показало свою базу данных, по-прежнему показывал удаленные модели (вопрос, выбор). Что я сделал здесь неправильно? Когда я получаю доступ из оболочки python PItable.objects.filter(id=1), он показывает пустой []. Спасибо за любую помощь!

$ python manage.py sqlmigrate pidb 0001 

BEGIN; 
-- 
-- Create model Choice 
-- 
CREATE TABLE "pidb_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL); 
-- 
-- Create model Question 
-- 
CREATE TABLE "pidb_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(200) NOT NULL, "pub_date" datetime NOT NULL); 
-- 
-- Add field question to choice 
-- 
ALTER TABLE "pidb_choice" RENAME TO "pidb_choice__old"; 
CREATE TABLE "pidb_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id" integer NOT NULL REFERENCES "pidb_question" ("id")); 
INSERT INTO "pidb_choice" ("id", "choice_text", "question_id", "votes") SELECT "id", "choice_text", NULL, "votes" FROM "pidb_choice__old"; 
DROP TABLE "pidb_choice__old"; 
CREATE INDEX "pidb_choice_7aa0f6ee" ON "pidb_choice" ("question_id"); 

COMMIT; 
+0

Что именно вы здесь задаете? Вы удалили записи в таблицах или сбросили таблицы? – e4c5

+0

Насколько я могу судить, вы создали таблицы базы данных, но они пусты - вы не ввели никаких данных. Ожидаете ли вы, что записи базы данных появятся волшебным образом? –

+0

База данных name.info.db уже была создана с использованием кода python другими людьми. Я просто использую его. Я могу получить доступ к данным из кода python. Теперь мне нужно переделать весь проект в django. – user2607925

ответ

0

Подробнее о managed option. Если вы установите его на False, для этой модели не будут созданы операции создания или удаления таблицы базы данных. Это полезно, если модель представляет собой существующую таблицу или представление базы данных, которое было создано другими способами.

class PItable(models.Model): 
    pid_text = models.CharField(max_length=200) 
    lname_text = models.CharField(max_length=200, null=True) 
    fname_text = models.CharField(max_length=200, null=True) 
    affs_text = models.CharField(max_length=2000, null=True) 
    pmidlist_text = models.CharField(max_length=2000, null=True) 
    clustering_text = models.CharField(max_length=2000, null=True) 

    class Meta(object): 
     managed = False 

    def __str__(self): 
     return self.fname_text 
Смежные вопросы