![](/img/trans.png)
[英]Django: returning __str__ error when I try to add new instance of model from admin dashboard
[英]Error in django when I add two new fields to a class model
我的腳本“myProject.models.difference.py”中有一個名為 Difference 的類,它是:
class Difference(models.Model):
comparator = models.ForeignKey(ScenarioComparator, on_delete=models.CASCADE)
summary = models.CharField('summary',max_length=900000)
在我的腳本“myProject.admin.scenario.py”中,我有相應的管理類:
class DifferenceAdmin(admin.ModelAdmin):
list_display = ("comparator","summary",)
但我需要在我的類差異中添加兩個字段:
class Difference(models.Model):
comparator = models.ForeignKey(ScenarioComparator, on_delete=models.CASCADE)
summary = models.CharField('summary',max_length=900000)
diff_class = models.CharField('diff_class',max_length=1000)
diff_field = models.CharField('diff_field',max_length=500)
之后我讀到下一個錯誤:“沒有這樣的列:myproject_difference.diff_class”。 但是,如果我以這種方式評論新字段 diff_class, diff_field:
class Difference(models.Model):
comparator = models.ForeignKey(ScenarioComparator, on_delete=models.CASCADE)
summary = models.CharField('summary',max_length=900000)
#diff_class = models.CharField('diff_class',max_length=1000)
#diff_field = models.CharField('diff_field',max_length=500)
然后錯誤消失。 ¿我必須做什么才能添加新字段?
您需要進行數據庫遷移。 保存模型:
class Difference(models.Model):
comparator = models.ForeignKey(ScenarioComparator, on_delete=models.CASCADE)
summary = models.CharField('summary',max_length=900000)
diff_class = models.CharField('diff_class',max_length=1000)
diff_field = models.CharField('diff_field',max_length=500)
然后執行以下兩個manage.py
命令:
$ python3 manage.py makemigrations
$ python3 manage.py migrate
每次更改models.py時都需要這樣做
將字段添加到模型后,您必須進行遷移以將列添加到數據庫
運行這兩個命令
python manage.py makemigrations
python manage.py migrate
在myProject.models
文件夾中,是否有__init__.py
文件? 在它里面,你需要這個:
from .difference import *
如果模型位於與 models.py 不同的 .py 文件中,則需要將它們導入到init .py 文件中,否則 Django 應用程序將不知道它在那里。
當您執行python manage.py makemigrations
時,它是否在遷移文件夾中創建了遷移文件?
解決方案是為diff_class
和diff_field
寫一個默認值。 當您運行python manage.py makemigrations
它會出現一條警告,提示您需要默認值。
所以我寫
class Difference(models.Model):
comparator = models.ForeignKey(ScenarioComparator, on_delete=models.CASCADE)
summary = models.CharField('summary',max_length=900000)
diff_class = models.CharField('diff_class',max_length=1000,default = 'class')
diff_field = models.CharField('diff_field',max_length=500, default= 'field')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.