如何编辑Django模型



假设我的模型上有一些数据,我想编辑它,我如何在不删除模型或像在管理面板上那样重新创建新模型的情况下做到这一点?

如果您想在面板外自动执行一些大型操作(如更改每个为null的值(,则必须使用python manage.py shell手动插入列。

假设您有一个models.Model继承的名为myModel的类,稍后您将决定添加一个新列b

您的类定义为:

class myModel(models.Model):
a = models.TextField(max_length=20, null=True)
b = models.TextField(max_length=20, null=True) # this is added later

现在您要做的是运行python manage.py shell并执行以下

>>> from app.models import myModel # I assmue your app is named app
>>> myModel.objects.all() # All the previous models that were created
<QuerySet [<myModel: myModel object (1)>]>
>>> for model in myModel.objects.all():
...     if not model.b:
...             model.b = "THIS WAS NULL, NOW IT ISN'T" # modify as you wish
...             model.save() 

如果我正确理解你的问题a,编辑数据的一个简单方法是将你的模型添加到管理员中,并在你的应用程序管理员中添加你想更改和编辑的字段

from django.contrib import admin
from youapp.models import MyModel
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
pass

然后只需运行您的项目并通过管理员手动更新,另一种选择是使用django-shell或创建自定义迁移

ps:通常你可以访问管理员http://localhost:8000/admin

您可能需要创建一个超级用户,运行python manage.py createsuperuser并按照的说明进行操作

Django管理文档

最新更新