Django แก้ไขผู้ดูแลระบบพหูพจน์


148

ฉันจะเปลี่ยนชื่อรุ่นบางส่วนจาก "หมวดหมู่" เป็น "หมวดหมู่" บนไซต์ผู้ดูแลระบบในรุ่น dev django ใหม่ได้อย่างไร ในรุ่นเก่า (โดยไม่มีไซต์ผู้ดูแลระบบและรุ่นผู้ดูแลระบบ) คุณสามารถทำได้ http://www.the-dig.com/blog/post/customize-plural-name-django-admin/

อย่างไรก็ตาม - ตอนนี้การตั้งค่า verbose_name_plural ภายใน classadmin ตามรุ่นของฉันไม่ทำอะไรเลย ใคร encouter เรื่องเดียวกัน?


มันใช้งานได้สำหรับฉันใน Django 1.1.1 ... คุณแน่ใจหรือไม่ว่าคุณอยู่ในชั้นเรียน Meta Meta?
rescdsk

ใช่ฉันแค่คิดว่ารุ่นใหม่กำจัดคลาส Meta ภายในภายในโมเดล เห็นได้ชัดว่าไม่ - พวกเขาทำสิ่งที่ซับซ้อนมากขึ้นกับชั้นเรียนของผู้ดูแลระบบ ...
Andriy Drozdyuk

คำตอบ:


274

ดูเหมือนว่าวิธี Meta class ยังใช้งานได้ดี ดังนั้นการวางเมตาคลาสไว้ในโมเดลของคุณจะยังคงใช้เคล็ดลับ:

class Category(models.Model):
    class Meta:
        verbose_name_plural = "categories"

โปรดทราบว่าเราใช้ตัวพิมพ์เล็กที่นี่เนื่องจาก django ฉลาดพอที่จะใช้ประโยชน์เมื่อเราต้องการ

ฉันพบว่าการตั้งค่าตัวเลือกนี้ในรูปแบบแปลก ๆ เมื่อเทียบกับไฟล์ admin.py นี่คือตำแหน่งในเอกสาร dev ที่มีการอธิบาย:
http://docs.djangoproject.com/en/dev/ref/models/options/#verbose-name-plural


20
ความคิดในการตั้งค่านี้ในคลาสโมเดล (แทนที่จะเป็น admin.py) ทำให้เกิดการDRY - เพียงเพราะผู้ดูแลระบบเป็นสิ่งเดียวนอกกรอบที่ใช้ข้อมูลนี้เกี่ยวกับแบบจำลองของคุณไม่ได้หมายความว่ามันจะเสมอไป เป็น หวังว่าถ้าคุณต้องการชื่อพหูพจน์ของแบบจำลองบางแห่งในรหัสของคุณเองคุณจะใช้คุณสมบัตินี้แทนการประดิษฐ์วงล้อใหม่
cibyr

11

เพื่อที่คุณจะต้องเพิ่มคลาสเมตาสำหรับรุ่นต่างๆ

class Category(models.Model):
    --- model field here ---
    class Meta: 
        verbose_name = "Category"
        verbose_name_plural = "Categories"

โบนัสสำหรับผู้ดูแลโมเดลของคุณใน apps.py

class CategoryConfig(AppConfig):
    name = "Category"
    verbose_name = "Categories"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.