django 관리자가 필드를 NULL로 설정할 수 있도록 하려면 어떻게 해야 합니까?
모델 필드를 다음과 같이 설정했습니다.null=True
MySQL에서 NULL을 허용하지만 Django Admin을 통해 필드에 NULL을 할당할 수 없습니다.세팅도 해봤는데blank=True
이 경우 필드는 빈 문자열로 설정됩니다.필드 값이 문자열인 "없음"으로 설정되었기 때문에 다음 작업도 수행되지 않았습니다.
좋은 생각 있어요?
덮어쓰기를 시도합니다.save()
의 방법Model
빈 값을 확인하려면:
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)
문서의 이 섹션에서는 문자열 기반 필드를 다음과 같이 설정할 수 없습니다.NULL
빈 문자열이 사용됩니다.장고는 이렇게 하는 거야.다른 유형의 필드에서도 사용할 수 있습니다.
관리 스크립트를 해킹하거나 데이터베이스에서 NULL일 필요가 없다고 판단해야 합니다.빈 문자열은 괜찮습니다.
이 코드를 사용해 보세요.여기에 있는 언어.subregion has 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)
보통 둘 다 합격하면null=True
그리고.blank=True
admin에서 필드를 공백으로 두면Django
사용하다NULL
그 가치를 위해.
편집:
~하듯이agf
그의 답변에서 이는 를 제외한 모든 유형에 해당된다고 설명합니다.CharField
그리고.TextField
.
관리자 전용으로 Django를 사용하는 경우가 많아 많은 NULL을 DB에 보존해야 합니다.이 스니펫을 사용하여 특정 객체의 모든 빈 문자열을 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)
이것은 Django 2.0.1에서 수정되어 있습니다.이 버전부터 빈 값은 null 가능한 Charfields에 대해 None으로 저장됩니다.
티켓 : https://code.djangoproject.com/ticket/4136
커밋: https://github.com/django/django/commit/267dc4adddd2882182f71a7f285a06b1d4b15af0
언급URL : https://stackoverflow.com/questions/6993780/how-can-i-allow-django-admin-to-set-a-field-to-null
'source' 카테고리의 다른 글
-XX의 차이:+ParallelGC 및 -XX 사용:+UseParNewGC (0) | 2023.01.22 |
---|---|
PHP 컨스트럭터의 __construct() 대 SameAsClassName() (0) | 2023.01.22 |
PHP의 연결 풀링 (0) | 2023.01.22 |
html에서 php를 사용하여 img src, title 및 alt를 추출하는 방법은 무엇입니까? (0) | 2023.01.22 |
요소를 기준으로 마우스 위치 찾기 (0) | 2023.01.22 |