django admin 사용자 정의form 양식

3048 단어 Django
먼저 수요를 말하자면 excel에서 데이터베이스에 가져온 필드의 형식은 건설은행 + 리턴 + (13002200)이다. 만약에 Django 백엔드를 사용하면 리턴 부분은 입력할 수 없고 백엔드의 규칙만 수정하고 왼쪽 아래에서 처리할 수 있다.방법:
     :        :“   ”,“   ”。     ,      ,                 ——bank_name,        。    ?       ,     ,     ,  ... ...                ,    。         ,    ,   ,  。

우선 두 개의 가상 필드를 추가해야 합니다. 이름은name,code입니다.여기에 쓰인 것은 djanog입니다.forms 방법.임의의 곳에py 파일을 새로 만듭니다. 저는 바로admin에 있습니다.py에 적힌 것은 결벽증이 있는 것이니 이렇게 하지 마라, 매우 어지럽다.양식을 만들려면 다음과 같이 하십시오.
  class BankcardsForm(forms.ModelForm):
          name = forms.CharField(required=True,error_messages={'required':'       '},widget=forms.TextInput(attrs={'placeholder':u'      '}))
          code = forms.CharField(validators=[bankcode_validate,],widget=forms.TextInput(attrs={'placeholder':u'      '}))
1:widget=forms.TextInput(attrs={'placeholder':u'      '})            。          。
2:required=True,error_messages={'required':'       '}        ,required=True    ,error_message,     。
3:validators=[bankcode_validate,]          。          。
def bankcode_validate(value):
try:
    va = int(value)
except:
    raise forms.ValidationError(u'   8     ')
if len(value) != 8:
    raise forms.ValidationError(u'     8')

기타 검증 방식.
pwd = forms.CharField(required=True,min_length=6,max_length=10,
                          error_messages={'required':'      ',
                                          'min_length':'    6 ',
                                          'max_length':'    10 '}
                          )

위에는 다른 검증 방식이 있다.폼 작성이 완료되고 검증도 완료된 후.
@admin.register(Bankcards)
class BankcardsAdmin(admin.ModelAdmin):
    form = BankcardsForm #     ,           
    #        --    ,         fields = ()  ,      list_display
    fieldsets = (
        ('Bank_info',{
            'fields':('name','code','bank_num')
        }),
        ('Other',{
            'fields':('bank_name','flag_long','flag_num','card_long','type','bank_lhh','shangf_code')
        }),
    )
    readonly_fields = ('bank_num',)
    def save_model(self, request, obj, form, change):
        #print type(form.Meta.fields)
        name = request.POST.get('name') #           
        code = request.POST.get('code')#           
        obj.bank_num = name+'
'+'('+code+')' obj.save() # , : Bank.objects.create(name=name,code=code)# list_display = ('bank_num','bank_name','card_long','flag_long','flag_num','type','bank_lhh','shangf_code') search_fields = ('bank_num','flag_num','flag_long')

좋은 웹페이지 즐겨찾기