Giá trị mặc định cho trường trong mô hình Django


99

Giả sử tôi có một 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 tại tôi đang sử dụng quản trị viên mặc định để tạo / chỉnh sửa các đối tượng kiểu này. Làm cách nào để xóa trường bkhỏi quản trị viên để mỗi đối tượng không thể được tạo với một giá trị và thay vào đó sẽ nhận một giá trị mặc định là 0000000?

Câu trả lời:



22

Bạn có thể đặt mặc định như sau:

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

và sau đó bạn có thể ẩn trường bằng lớp Quản trị viên của mô hình của bạn như sau:

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

21

Bạn cũng có thể sử dụng một có thể gọi trong trường mặc định, 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 trong 1.8, mặc dù tài liệu chỉ ra rằng nó nên làm. Nên foo()là một phương thức lớp?
ToothlessRebel

3
Bạn có thể phải đặt @staticmethodtrình bao bọc xung quanh chức năng foo.
Addict
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.