繁体   English   中英

如何在Django Admin中分离对象?

[英]How To Separate Objects In Django Admin?

我有一个名为“ Product”的应用,具有以下models.py:

class Product(models.Model):
    product_id = models.CharField(max_length=50)
    pub_date = models.DateTimeField(default=datetime.now)
    title = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    featured = models.BooleanField(default=False)

我想在Django Admin中有两个单独的部分: ProductsFeatured Products ,取决于featured = TrueFalse 因此,默认情况下,所有产品都列在“ 产品”部分下。 但是,如果Featured featured = True它们将被移至Featured Products部分。 你能帮我怎么做吗? 提前致谢。

三个步骤:

  1. 为Model Product编写代理模型
  2. 默认管理器更改为仅退还特色产品。
  3. 像其他任何模型一样,在管理员中注册您的代理模型。

您可以在此处了解更多信息: 使用代理模型来自定义Django Admin

有两种方法可以做到这一点。 最简单的方法可能是创建数据库视图,然后使用Django模型封装它。 您可以在数据库控制台中创建如下视图:

CREATE VIEW view_name AS
  SELECT columns
  FROM tables
  [WHERE conditions];

完成此操作后,您可以像这样在django中引用视图:


class FeaturedProduct(modes.Model):
    attr1 = models.CharField()

    class Meta:
        managed = False
        db_table = '<name of your view here>'

确保将managed设置为False 这是有关的文档 您想要这样做是因为django不是为您创建此模型,而是由您自己创建。

另一种方法是创建一个自定义Manager 这些管理器允许您修改模型的objects属性,从而可以设置所需的查询集。 我认为您想看看Manager文档 ,就可以为对象定义自定义查询集

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM