大約兩週前我被介紹給Python和Django,請耐心等待。我現在也應該說我正在使用Django 1.6和Python 3.3。通過在Django中選擇外鍵顯示「info」admin
我的項目是一個訂單管理系統。以下是它的工作原理:客戶進入商店並訂購物品。該項目被放入一個訂單中,該訂單在員工向供應商下訂單之前是空閒的。基本上,我有一個訂單表,它收集諸如customer_name,order_date,status等信息。然後,我有一個EmployeeOrder表(與Order的關係爲1-1),它具有Order的所有元素,但也包含employee_placed和employee_order_date(幾乎只是擴展Order)。
我想要做的就是這樣,當用戶選擇該客戶的訂單正在放置一個EmployeeOrder滿足,則顯示的是客戶訂單的信息編寫代碼。我真的不在乎它現在是如何顯示的,彈出窗口可以正常工作。我只是不知道該怎麼做,我沒有遇到任何問題。現在下拉框只顯示訂單1,訂單2等。用戶不會記住哪些訂單包含哪些項目,所以這就是爲什麼我要顯示訂單信息的原因。總之,這裏是我的代碼至今:
models.py
class Order(models.Model):
customer_order_date = models.DateTimeField('Date helped')
customer_placed = models.ForeignKey(Customer)
employee_helped = models.ForeignKey(Employee)
STATUS_OF_ORDER = (
('IDLE', 'Not yet ordered'),
('SHIP', 'Awaiting delivery'),
('PICK', 'Ready for pickup'),
('UNAV', 'Unavailable for order'),
('BACK', 'Backordered - awaiting delivery'),
('CANC', 'Canceled by customer'),
('ARCH', 'Fulfilled - archived'),
)
status = models.CharField(max_length=4, choices=STATUS_OF_ORDER,
default='IDLE', editable=False)
paid = models.BooleanField('Paid', default=False)
ship = models.BooleanField('Ship', default=False)
comments = models.CharField(max_length=200, blank=True, null=True)
item = models.ManyToManyField(Item)
def __str__(self):
return 'Order ' + str(self.id)
def is_idle(self):
return self.status == 'IDLE'
class EmployeeOrder(models.Model):
order = models.OneToOneField(Order, primary_key=True,
limit_choices_to={'status': 'IDLE'})
employee_order_date = models.DateTimeField('Date ordered')
employee_placed = models.ForeignKey(Employee)
admin.py
class OrderAdmin(admin.ModelAdmin):
list_display = ('customer_order_date', 'customer_placed')
raw_id_fields = ('customer_placed', 'item')
class EmployeeOrderAdmin(admin.ModelAdmin):
list_display = ('employee_order_date', 'employee_placed')
任何和所有幫助表示讚賞,因爲我仍然承認,我是一個總的小白,當它來Python和Django!
你知道什麼..這很好!我當時想的太過分了!我想我只是想,因爲沒有太多的命令可以選擇(至少在理論上),下拉框可以。不幸的是,在使用下拉菜單時,您看不到訂單中的任何數據。非常感謝你! – nblakey
太棒了!我就是這麼做的。我相信下拉框會顯示對象的\ _ \ _ str__或\ _ \ _ unicode__方法返回的內容,但我通常會盡量避免將這些方法用於調試以外的任何其他方法。 – DavidM
你的想法是正確的。就像我說的那樣,它不是很具描述性。這種方式好多了。現在我只需要在我的連接表上工作,以便按順序顯示項目名稱。 – nblakey