首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许django管理员将字段设置为空?

问如何允许django管理员将字段设置为空?
EN

Stack Overflow用户
提问于 2011-08-09 17:07:19
回答 6查看 24.3K关注 0票数 52

我已经将我的Model字段设置为null=True,这允许在MySQL中使用NULL,但是我似乎不能通过Django Admin将NULL赋给该字段。我也尝试过设置blank=True,但这只是将字段设置为空字符串。下面的this也不起作用,因为字段值被设置为字符串"None“。

有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-08-09 23:54:26

尝试覆盖Model的save()方法,以检查是否有空值:

代码语言:javascript
复制
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)
票数 44
EN

Stack Overflow用户

发布于 2011-08-09 17:16:49

This section in the docs听起来像是无法通过管理员将基于字符串的字段设置为NULL;它将使用空字符串。Django就是这样做的。它将适用于其他类型的字段。

您要么必须修改管理脚本,要么决定它在数据库中实际上不需要为NULL;空字符串就可以了。

票数 19
EN

Stack Overflow用户

发布于 2014-05-11 04:06:16

尝试此代码,此处为Language.subregion hass null=True此代码覆盖管理表单设置(LanguageAdmin),并将“Language.subregion”字段属性- required设置为False

代码语言:javascript
复制
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)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6993780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档