2012-04-06 37 views
24

Trong quản trị viên Django, tôi muốn ghi đè và triển khai biểu mẫu của riêng tôi cho một mô hình (ví dụ: Mô hình hóa đơn).Ghi đè biểu mẫu trong quản trị Django

Tôi muốn biểu mẫu hóa đơn có trường tự động điền cho tên khách hàng, tên sản phẩm và tôi cũng muốn thực hiện xác thực tùy chỉnh (chẳng hạn như giới hạn tín dụng cho khách hàng). Làm thế nào tôi có thể ghi đè lên các hình thức mặc định được cung cấp bởi Django admin và thực hiện của riêng tôi?

Tôi mới sử dụng Django, tôi đánh giá cao bất kỳ con trỏ nào.

Trả lời

38

Bạn có thể ghi đè biểu mẫu cho quản trị viên tích hợp của django bằng cách đặt thuộc tính biểu mẫu của ModelAdmin thành lớp biểu mẫu của riêng bạn. Xem https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formhttps://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

Nó cũng có thể ghi đè lên hình thức template- có một cái nhìn tại https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

Nếu bạn đang tìm kiếm đặc biệt cho autocomplete tôi có thể khuyên https://github.com/crucialfelix/django-ajax-selects

+0

Có thể ghi đè hình thức của biểu mẫu không? Với tính năng tự động hoàn thành cho các trường đã chọn. – 18bytes

+1

Chắc chắn là tôi đã cập nhật câu trả lời của mình. – fest

+0

Nếu bạn đang tìm kiếm quản trị tự động hoàn thành, tôi đã không sử dụng django-ajax-lựa chọn, nhưng [django-autocomplete-light] (http://django-autocomplete-light.readthedocs.io/en/master/) là chắc chắn giá trị nó :) – GabLeRoux

14

Làm thế nào để ghi đè lên một hình thức trong quản trị django theo số docs:

from django import forms 
from django.contrib import admin 
from myapp.models import Person 

class PersonForm(forms.ModelForm): 

    class Meta: 
     model = Person 
     exclude = ['name'] 

class PersonAdmin(admin.ModelAdmin): 
    exclude = ['age'] 
    form = PersonForm 
+0

Tôi có đặt mã này trong models.py hoặc admin.py không. Ngoài ra đâu là ứng dụng Người sắp tới, điều này đề cập đến một ứng dụng tôi đã tạo? –

+0

@KehlinSwain: Người là Người mẫu. Mã này có thể tồn tại trong admin.py hoặc một form.py bên ngoài mà bạn nhập từ admin.py. –

Các vấn đề liên quan