2014-11-27 20 views
7

vì vậy tôi đã tạo mô hình ở Django cho db của tôi, nhưng bây giờ muốn đổi tên mô hình. Tôi đã thay đổi tên trong lớp Meta và sau đó thực hiện di chuyển/di chuyển nhưng điều đó chỉ tạo ra các bảng mới.Đổi tên mô hình (bảng) ở Django

Tôi cũng đã thử schemamigration nhưng cũng không làm việc, tôi đang sử dụng Django 1,7

Dưới đây là mô hình của tôi

class ResultType(models.Model): 
    name = models.CharField(max_length=150) 
    ut = models.DateTimeField(default=datetime.now) 
    class Meta: 
     db_table = u'result_type' 

    def __unicode__(self): 
     return self.name 

Cheers

Trả lời

17

Django không biết, những gì bạn đang cố gắng làm. Theo mặc định nó sẽ xóa bảng cũ và tạo mới. Bạn cần phải tạo một di cư trống rỗng, sau đó sử dụng hoạt động này (bạn cần phải viết nó bằng chính mình):

https://docs.djangoproject.com/en/stable/ref/migration-operations/#renamemodel

Something như thế này:

class Migration(migrations.Migration): 

    dependencies = [ 
     ('yourappname', '0001_initial'), 
    ] 

    operations = [ 
     migrations.RenameModel("OldName", "NewName") 
    ] 
+0

Tôi nghĩ django tôi không đồng bộ , lỗi "Mô hình của bạn có các thay đổi chưa được phản ánh trong quá trình di chuyển và sẽ không được áp dụng. Chạy 'manage.py makemigrations' để thực hiện di chuyển mới và sau đó chạy lại 'manage.py migrate' để áp dụng chúng "Tôi đã xóa tất cả 0001_initial.py và sau đó tạo một di chuyển với lớp mới của tôi .. –

+0

Tôi muốn đổi tên một bảng vì tôi đang đổi tên ứng dụng. Làm thế nào tôi có thể đạt được điều đó? –

+2

Vì vậy, để tạo một di chuyển trống: './manage.py makemigrations --empty myapp'. – Ehvince

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