在Django admin中选择外键显示“info”

2024-09-26 22:10:13 发布

您现在位置:Python中文网/ 问答频道 /正文

大约两周前我被介绍给Python和Django,所以请耐心听我说。我现在还应该说,我使用的是django1.6和python3.3。你知道吗

我的项目是一个订单管理系统。它的工作原理是:一个顾客走进一家商店,订购一件商品。该项被放入一个订单中,在员工向供应商下订单之前,该订单处于空闲状态。基本上,我有一个Order表,它收集客户名称、订单日期、状态等信息。然后我有一个EmployeeOrder表(与订单的1-1关系),它包含订单的所有元素,但也包含employeeplaced和EmployeeOrder日期(几乎只是扩展订单)。你知道吗

我要做的是编写代码,这样当用户通过下EmployeeOrder选择要完成哪个客户订单时,就会显示该客户订单的信息。我真的不在乎它现在是如何显示,弹出窗口将工作得很好。我只是不知道怎么做,而且我在任何地方都没有遇到过。现在,下拉框只显示订单1、订单2等。用户不会记住哪些项目包含在哪个订单中,所以我希望显示订单信息。总之,这是我目前的代码:

你知道吗型号.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)

你知道吗管理员.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')

任何和所有的帮助是感谢的,因为我仍然承认,我是一个完全noob当谈到Python和Django!你知道吗


Tags: 订单self信息date客户modelsemployeeorder
1条回答
网友
1楼 · 发布于 2024-09-26 22:10:13

这听起来像是你想让一个员工能够使用管理网站创建一个员工订单从客户订单。我认为它可以简单到为客户订单添加一个原始ID字段。也就是说,我认为你可以这样改变雇员的顺序:

class EmployeeOrderAdmin(admin.ModelAdmin):
    list_display = ('employee_order_date', 'employee_placed')
    raw_id_fields = ('order',)

现在,当员工创建员工订单时,他们将能够使用OrderAdmin页面来查找所需的订单。你知道吗

另外,假设您希望该弹出窗口以特定方式显示订单。在这种情况下,请记住,显示该弹出窗口的请求将包含一个名为pop的额外GET参数。你可以:

class OrderAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(ActiveOfferAdmin, self).queryset(request)
        if request.GET.get('pop'):
            return qs.order_by(...)
        return qs

相关问题 更多 >

    热门问题