2017-01-12 5 views
0

Я интерфейс администратора, мне нужно проверить поле, которое находится внутри Inline. Сайт имеет имя , которое должно храниться в нижнем регистре.Validate Admin Inline form

Как я могу получить доступ к полю в строке inline для выполнения этой проверки?

Я мог бы также переопределить его метод сохранения в моделях, но я хотел бы знать, как это сделать в admin.

class SiteInline(admin.TabularInline): 
    model = Site 
    classes = ('grp-collapse grp-open',) 
    inline_classes = ('grp-collapse grp-open',) 


class CompanyAdmin(admin.ModelAdmin): 
    ordering = ['name'] 
    inlines = (SiteInline,) 

ответ

1

Вы можете использовать Regex для проверки поля.

admin.py

from django import forms 
from django.contrib import admin 
from django.core import validators 
from django.utils.translation import ugettext_lazy as _ 

from .models import Company, Site 


class SiteInlineAdminForm(forms.ModelForm): 
    name = forms.CharField(max_length=16, 
     help_text=_('Required. lower case character For Example: test'), 
     validators=[ 
      validators.RegexValidator(r'^[a-z]*$', 
       message=_('Enter a valid name. This value may contain only lower case character.')), 
     ]) 

    class Meta: 
     model = Site 
     exclude =() 


class SiteInline(admin.TabularInline): 
    model = Site 
    form = SiteInlineAdminForm 
    classes = ('grp-collapse grp-open',) 
    inline_classes = ('grp-collapse grp-open',) 


class CompanyAdmin(admin.ModelAdmin): 
    ordering = ['name'] 
    inlines = (SiteInline,) 


admin.site.register(Company, CompanyAdmin)