2009-04-16 47 views
66

Giả sử tôi có một mô hình:Giá trị mặc định cho trường trong Django mô hình

class SomeModel(models.Model): 
    id = models.AutoField(primary_key=True) 
    a = models.CharField(max_length=10) 
    b = models.CharField(max_length=7) 

Hiện nay tôi đang sử dụng quản trị mặc định để tạo/chỉnh sửa đối tượng thuộc loại này. Làm cách nào để xóa trường b từ quản trị viên sao cho mỗi đối tượng không thể được tạo với giá trị và thay vào đó sẽ nhận được giá trị mặc định là 0000000?

Trả lời

19

Bạn có thể thiết lập mặc định như thế này:

b = models.CharField(max_length=7,default="foobar") 

và sau đó bạn có thể ẩn các lĩnh vực với lớp của Admin mô hình của bạn như thế này:

class SomeModelAdmin(admin.ModelAdmin): 
    exclude = ("b") 
15

Bạn cũng có thể sử dụng một callable trong mặc định trường, chẳng hạn như:

b = models.CharField(max_length=7, default=foo) 

Và sau đó xác định có thể gọi:

def foo(): 
    return 'bar' 
+4

Điều này dường như không hoạt động ở 1,8, mặc dù tài liệu cho biết. 'Foo()' có nên là một phương thức lớp không? – ToothlessRebel

+2

Bạn có thể phải đặt trình bao bọc '@ staticmethod' xung quanh hàm foo. – Addict

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