Nilai default untuk bidang dalam model Django

100

Misalkan saya punya model:

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

Saat ini saya menggunakan admin default untuk membuat / mengedit objek jenis ini. Bagaimana cara menghapus bidang bdari admin sehingga setiap objek tidak dapat dibuat dengan nilai, dan akan menerima nilai default 0000000?

Yuval Adam
sumber

Jawaban:

22

Anda dapat mengatur default seperti ini:

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

dan kemudian Anda dapat menyembunyikan bidang dengan kelas Admin model Anda seperti ini:

class SomeModelAdmin(admin.ModelAdmin):
    exclude = ("b")
Andrew Hare
sumber
21

Anda juga dapat menggunakan callable di bidang default, seperti:

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

Dan kemudian tentukan callable:

def foo():
    return 'bar'
MrOodles
sumber
4
Ini tampaknya tidak berfungsi di 1.8, meskipun dokumentasi menunjukkan itu seharusnya. Haruskah foo()menjadi metode kelas?
ToothlessRebel
3
Anda mungkin harus menyetel @staticmethodpembungkus di sekitar fungsi foo.
Addict