【问题标题】:Displaying different models with django_tables2使用 django_tables2 显示不同的模型
【发布时间】:2013-10-24 01:13:19
【问题描述】:

我对 django 很陌生,因此如果这是一个新手问题,我很抱歉。我想知道是否有办法使用 django_tables2 显示来自不同模型的列?我想显示一个包含 Order_product 模型中所有列的表,但我还想包含 Orders 模型中的 customer 和 publication_date 列?我已经阅读了 django_tables2 文档,但这并没有多大帮助。

#models.py
class Customer(models.Model):
    costumer_id=models.IntegerField(max_length=5)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)


    def __unicode__(self):
        return self.first_name

class Product(models.Model):
    product_id=models.IntegerField(max_length=5)
    product_name=models.CharField(max_length=60)
    product_price=models.DecimalField(max_digits=5, decimal_places=2)


    def __unicode__(self):
            return self.product_name


class Orders(models.Model):
    order_id = models.CharField(max_length=5)
    customer = models.ForeignKey(Customer)
    publication_date = models.DateField()

    def __unicode__(self):
        return self.order_id


class Order_product(models.Model):
    order_id2 = models.ForeignKey(Orders)
    product_id2 = models.ForeignKey(Product)

【问题讨论】:

    标签: python django django-tables2


    【解决方案1】:

    这是假设您要基于 Order_product 查询集创建表。

    class Order_productTable(tables.Table):
        order_id2 = tables.Column()
        product_id2 = tables.Column()
        customer = tables.Column(accessor="order_id2.customer")
        publication_date = tables.Column(accessor="order_id2.publication_date")
    

    【讨论】:

      【解决方案2】:

      不确定我是否理解您的问题,为什么不使用多对多关系? 请参阅此处的文档: https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/

      class Orders(models.Model):
          order_id = models.CharField(max_length=5)
          customer = models.ForeignKey(Customer)
          publication_date = models.DateField()
          products = models.ManyToMany(Product)
      
          def __unicode__(self):
              return self.order_id
      

      您可以从订单中访问产品:

      >>> order = Orders.objects.all()[0]
      >>> for product in order.products:
             print product.prodcut_name
             ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多