django 1.5多个连接

时间:2013-08-12 20:43:11

标签: mysql django django-models django-admin

我希望通过第4个表格Pivot

显示3个表格
# Manufacturer
id | name

# Product
id |name

# Part 
id| name

# Pivot
id | part_name_fk | product_name_fk | manufacturer_name_fk

......以及将引用“Pivot”的第5张表

# Report 
id |pivot_record_fk|this_week_use

这是“关联”三个实体的正确方法,如果是这样,我将如何在显示所有相关条目的管理中显示它?

感谢。

1 个答案:

答案 0 :(得分:1)

你应该像这样结构化。

class Manufacturer(models.Model):
    name = models.CharField()

class Product(models.Model):
    name = models.CharField()
    manufacturer = models.ForeignKey(Manufacturer, related_name="products")

class Part(models.Model):
    name = models.CharField()
    manufacturer = models.ForeignKey(Product, related_name="parts")

class Report(models.Model):
    manufacturer = models.ForeignKey(Manufacturer, related_name="reports")
    this_week_use

然后在报告中,您可以使用以下内容根据部件名称过滤掉(如果需要):

Report.objects.filter(manufacturer__product__part__name="Nail")

对于admin,您可以通过向ReportAdmin类添加方法然后在list_display属性中引用它们来添加它以显示它的不同属性。您也可以将它们添加到list_filter,以便按值过滤掉。