ค่าดีฟอลต์สำหรับฟิลด์ในโมเดล Django


100

สมมติว่าฉันมีโมเดล:

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

ขณะนี้ฉันกำลังใช้ผู้ดูแลระบบเริ่มต้นเพื่อสร้าง / แก้ไขวัตถุประเภทนี้ ฉันจะลบเขตข้อมูลbจากผู้ดูแลระบบเพื่อให้แต่ละวัตถุไม่สามารถถูกสร้างขึ้นโดยมีมูลค่าและค่อนข้างจะได้รับค่าเริ่มต้น0000000?

คำตอบ:



22

คุณสามารถตั้งค่าเริ่มต้นได้ดังนี้:

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

จากนั้นคุณสามารถซ่อนฟิลด์ด้วยคลาส Admin ของโมเดลของคุณดังนี้:

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

21

คุณยังสามารถใช้ callable ในฟิลด์เริ่มต้นเช่น:

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

จากนั้นกำหนด callable:

def foo():
    return 'bar'

4
ดูเหมือนจะใช้ไม่ได้ใน 1.8 แม้ว่าเอกสารจะระบุว่าควร ควรfoo()เป็น class method หรือไม่?
ToothlessRebel

4
คุณอาจต้องตั้งค่า@staticmethodwrapper รอบ ๆ ฟังก์ชัน foo
Addict
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.