Hub*_*bro 33 python mysql sql django django-admin
我将我的Model字段设置为null=True
,在MySQL中允许NULL,但我似乎无法通过Django Admin为字段分配NULL.我也尝试过设置blank=True
,但这只是将字段设置为空字符串.下面这个没有任何工作,作为字段值被设置为"无",该字符串.
有任何想法吗?
rew*_*ten 31
尝试覆盖模型的save()方法,以检查空值:
class MyModel(models.Model):
my_nullable_string = models.CharField(max_length=15, null=True, blank=True)
def save(self, *args, **kwargs):
if not self.my_nullable_string:
self.my_nullable_string = None
super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
通常,当你同时通过null=True
和blank=True
,如果你离开在管理领域的空白,Django
将使用NULL
它的价值.
编辑:
正如agf
他在回答中所解释的那样,除了CharField
和之外,所有类型都是如此TextField
.
我经常仅将 Django 用于管理员,并且需要在数据库中保留大量 NULL。我使用此代码片段将特定对象上的所有空字符串设置为 NULL。
def save(self, *args, **kwargs):
for var in vars(self):
if not var.startswith('_'):
if self.__dict__[var] == '':
self.__dict__[var] = None
super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
尝试此代码,这里Language.subregion hass null = True此代码将覆盖管理表单设置(LanguageAdmin)并设置“ subregion”字段属性-必需为False
from app.models import Language
from django.contrib import admin
class Language(models.Model):
subregion = models.ForeignKey(SubRegion, null=True)
code = models.CharField(max_length=10, unique=True)
class LanguageAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super(LanguageAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['subregion'].required = False
return form
admin.site.register(Language, LanguageAdmin)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17197 次 |
最近记录: |