Rub*_*ben 10 django postgresql django-admin
我已经向我的管理员添加了一个新模型.这是我的models.py:
class EngineeringToolAttributeType(models.Model):
name = models.CharField(max_length=50)
description = models.CharField(max_length=255, blank=True, null=True)
api_url = models.CharField(max_length=255, blank=True, null=True)
api_field = models.CharField(max_length=50, blank=True, null=True)
active = models.BooleanField(default=True)
def __str__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
而admin.py:
from extras.models import EngineeringToolAttributeType
from django.contrib import admin
class EngineeringToolAttributeTypeAdmin(admin.ModelAdmin):
fields = ['name', 'description', 'api_url', 'api_field', 'active']
list_display = ('name', 'description', 'api_url', 'api_field', 'active')
admin.site.register(EngineeringToolAttributeType, EngineeringToolAttributeTypeAdmin)
Run Code Online (Sandbox Code Playgroud)
当我尝试添加(通过管理员点击添加按钮)时,我收到此错误:
Internal Server Error: /website/admin/extras/engineeringtoolattributetype/add/
IntegrityError at /admin/extras/engineeringtoolattributetype/add/
null value in column "name" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)
这从未发生过.我知道名字是不被允许的Null,但我仍然在添加记录.怎么可能?
此问题部分是由于未正确使用CharField而导致的TextField.您几乎不应该null=True在此字段及其子类上使用.
https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.Field.null
避免在基于字符串的字段(如CharField和TextField)上使用null.如果基于字符串的字段具有null = True,则表示它具有"无数据"的两个可能值:NULL和空字符串.在大多数情况下,为"无数据"提供两个可能的值是多余的; Django约定是使用空字符串,而不是NULL.一个例外是CharField同时具有unique = True和blank = True.在这种情况下,需要null = True以避免在使用空值保存多个对象时发生唯一约束违规.
我强烈建议从你的CharFields和TextFields中删除这个参数.
也是为了确保运行./manage.py makemigrations && ./manage.py migrate.
| 归档时间: |
|
| 查看次数: |
14186 次 |
| 最近记录: |