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?

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")

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'

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.