วิธีปรับแต่งโมเดลอินไลน์แบบหลายต่อหลายรายการในผู้ดูแลระบบ django

ฉันใช้อินเทอร์เฟซผู้ดูแลระบบเพื่อดูใบแจ้งหนี้และผลิตภัณฑ์ เพื่อให้สิ่งต่างๆ ง่ายขึ้น ฉันได้ตั้งค่าผลิตภัณฑ์เป็นแบบอินไลน์ในใบแจ้งหนี้ ดังนั้นฉันจะดูผลิตภัณฑ์ที่เกี่ยวข้องในแบบฟอร์มใบแจ้งหนี้ อย่างที่คุณเห็นว่าฉันกำลังใช้ความสัมพันธ์แบบกลุ่มต่อกลุ่ม

ใน models.py:

class Product(models.Model):
    name  = models.TextField()
    price = models.DecimalField(max_digits=10,decimal_places=2)

class Invoice(models.Model):
    company  = models.ForeignKey(Company)
    customer = models.ForeignKey(Customer)
    products = models.ManyToManyField(Product)

ใน admin.py:

class ProductInline(admin.StackedInline):
    model = Invoice.products.through

class InvoiceAdmin(admin.ModelAdmin):
    inlines = [FilteredApartmentInline,]
admin.site.register(Product, ProductAdmin)

ปัญหาคือ django นำเสนอผลิตภัณฑ์เป็นตารางเมนูแบบเลื่อนลง (หนึ่งรายการต่อผลิตภัณฑ์ที่เกี่ยวข้อง) แต่ละเมนูแบบเลื่อนลงประกอบด้วยผลิตภัณฑ์ทั้งหมดที่ระบุไว้ ดังนั้นหากฉันมีผลิตภัณฑ์ 5,000 รายการและ 300 รายการเชื่อมโยงกับใบแจ้งหนี้บางรายการ django จะโหลดชื่อผลิตภัณฑ์ขนาด 300x5000 จริงๆ โต๊ะก็ไม่สวยงามเช่นกัน

ฉันไม่ต้องการให้สินค้าอัปเดตผ่านแบบฟอร์มใบแจ้งหนี้ ฉันจะเปลี่ยนให้แสดงชื่อผลิตภัณฑ์ในตารางอินไลน์ได้อย่างไร ฉันควรแทนที่แบบฟอร์มใด และอย่างไร


person Jonathan    schedule 23.05.2010    source แหล่งที่มา
comment
ใน admin.py InvoiceAdmin จะต้องเป็น inlines=[ProductInline]   -  person Timo    schedule 01.05.2014


คำตอบ (1)


ฉันคิดว่ามันง่าย อย่าใช้อินไลน์ แค่ใช้คุณสมบัติ ModelAdmin.filter_horizontal

person diegueus9    schedule 24.05.2010
comment
นั่นตอบคำถามของฉันอย่างสมบูรณ์ แต่ตอนนี้ฉันมีการติดตามผล - ซึ่งจะแสดงรายการชื่อผลิตภัณฑ์ - จะต้องทำอย่างไรหากฉันต้องการลิงก์ไปยังผลิตภัณฑ์เพื่อให้สามารถลิงก์จากใบแจ้งหนี้ไปยังผลิตภัณฑ์ได้ - person Jonathan; 24.05.2010
comment
เมื่อคุณเลือกสินค้าในใบแจ้งหนี้และบันทึกวัตถุ คุณจะเชื่อมโยงทั้งสองวัตถุ - person diegueus9; 25.05.2010
comment
ลิงก์ที่ให้ไว้นั้นใช้งานไม่ได้ - person Vladimir Kroz; 11.01.2015
comment
@VKroz ฉันแก้ไขลิงก์แล้ว นี่เป็นสำหรับ django 1.2 (django ปัจจุบันเมื่อมีการถามคำถาม) ตอนนี้ฉันใส่ลิงก์สำหรับ django 1.7 - person diegueus9; 13.01.2015