2011-12-21 27 views
7

Trong Django, làm thế nào để bạn loại bỏ các mô hình mà bạn đã đồng bộ hóa vào cơ sở dữ liệu?Làm thế nào để loại bỏ các mô hình từ django?

Ví dụ trong trang hướng dẫn Django có mã này sau

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

Sau đó, tôi sử dụng python manage.py sql pollspython manage.py sql polls để tạo ra các bảng vào cơ sở dữ liệu. Nhưng nếu tôi làm điều gì đó sai và không muốn mô hình đó nữa. Cú pháp để loại bỏ nó là gì?

Trả lời

12

Không có cú pháp. Django không loại bỏ các bảng hoặc cột. Bạn phải tự thay đổi cơ sở dữ liệu của mình hoặc sử dụng công cụ di chuyển như miền Nam.

Nếu bạn chỉ chơi đùa với hướng dẫn, cách dễ dàng hơn là xóa tệp cơ sở dữ liệu sqlite của bạn và chạy lại đồng bộ hóa.

+1

Không có lệnh manage.py nào thực hiện điều đó cho bạn? – starcorn

+4

@starcorn Hãy thử django-admin.py flush –

+0

Khi cập nhật lên phiên bản hiện tại 1.11 'python manage.py di chuyển yourapp zero' sẽ hoàn tác di chuyển của bạn – Sarit

0

Xử lý cơ sở dữ liệu của Django qua syncdb hoàn toàn là phụ gia: bất kỳ mô hình mới nào sẽ được thêm vào, nhưng các mô hình đã xóa sẽ không bị xóa và các mô hình đã sửa đổi sẽ không bị sửa đổi.

Nếu bạn không có bất kỳ dữ liệu bạn muốn giữ lại, bạn cũng tốt chỉ thả và tái tạo lại cơ sở dữ liệu: nếu bạn có bất cứ điều gì bạn muốn giữ lại, hoặc thậm chí nếu bạn có ý định có bất cứ điều gì bạn muốn giữ lại, Tôi không thể tư vấn cho bạn đủ mạnh để sử dụng công cụ di chuyển: South là tiêu chuẩn thực tế cho mọi dự án tôi đã làm việc.

18

Nếu bạn không muốn xóa và tái đồng bộ cơ sở dữ liệu hiện tại của bạn, cách tốt nhất là để thả bàn từ mô hình của bạn bằng tay:

$ python manage.py dbshell 

> (Inside the DB shell) 
> DROP TABLE {app-name}_{model-name}; 
+0

Bây giờ manage.py di chuyển than phiền rằng bảng gốc không còn tồn tại nữa. – EddyTheB

1

Tại sao không chỉ đơn giản là cố gắng xóa các mô hình từ mô hình của bạn .py tập tin? Khi bạn chạy

python manage.py makemigrations

file di cư cần được cập nhật với các mô hình xóa.

+0

cảm ơn. điều này làm cho chắc chắn nó đặt nhiều bảng bị xóa với các phím nước ngoài theo thứ tự – Maruthi

0

Tôi đã cố gắng nhận xét mô hình mà tôi muốn xóa và thêm mô hình mới. Sau đó, sau khi tôi đã làm python manage.py makemigrations, nó hỏi tôi có đổi tên mô hình của tôi không. Tôi đã trả lời không và mô hình trước đó (nhận xét) đã bị xóa. Vì vậy, tôi nghĩ rằng nó sẽ xóa mô hình đó khỏi cơ sở dữ liệu

Các vấn đề liên quan