【发布时间】:2014-03-25 15:53:36
【问题描述】:
大约两周前我被介绍给 Python 和 Django,所以请耐心等待。我现在也应该说我正在使用 Django 1.6 和 Python 3.3。
我的项目是一个订单管理系统。它是这样工作的:客户进入商店并订购商品。该项目被放入订单中,该订单处于空闲状态,直到员工向供应商下订单。基本上,我有一个 Order 表,它收集诸如 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 方面完全是菜鸟!
【问题讨论】:
标签: python django python-3.x django-models django-admin