我有一个网上商店应用程序的订单模型,自动增加主键和外键本身,因为订单可以分成多个订单,但必须保持与原始订单的关系。 class Order(models.Model): ordernumber = models.AutoField(primary_key=True) parent_order = models.ForeignKey('self', null=True, blank=True, related_name='child_orders') # .. other fields not relevant here 我为pipe理网站注册了一个OrderAdmin类。 对于详细视图,我在fieldsets属性中包含了parent_order 。 当然,默认情况下,这会列出select框中的所有订单,但这不是所需的行为。 相反,对于没有父订单的订单(即, parent_order从其他订单拆分; parent_order为NULL /无),则不应显示订单。 对于已拆分的订单,这应该只显示单亲订单。 有一个相当新的ModelAdmin方法可用, formfield_for_foreignkey ,这似乎是完美的,因为queryset可以在里面过滤。 假设我们正在查看订单#11234的细节视图,该订单已从订单#11208中拆分。 代码如下 def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'parent_order': # kwargs["queryset"] = Order.objects.filter(child_orders__ordernumber__exact=11234) return db_field.formfield(**kwargs) return super(OrderAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 注释行在Python shell中运行时工作,返回包含#11234的订单#11208的单个项目查询集以及可能已经从中拆分的所有其他订单。 […]
我有一个与Book有外键关系的Person模型。 书有很多字段,但是我最关心的是“作者”(一个标准的CharField)。 据说,在我的PersonAdmin模型中,我想使用“list_display”显示“book.author”。 我已经尝试了所有明显的方法(见下文),但似乎没有任何工作。 有什么build议么? class PersonAdmin(admin.ModelAdmin): list_display = ['book.author',]