当前位置: 首页 > 知识库问答 >
问题:

使用 Django Rest 框架的自定义订单字段

梁华清
2023-03-14

我有个模特就像

class MyModel(models.Model):
    COLOR_CODES = ['RED', 'YELLOW', 'GREEN']
    name = models.CharField(db_column='name', max_length=200, blank=False, null=False, unique=True)
    colorCode = EnumField(db_column='color_code', choices=COLOR_CODES, null=False, default='GREEN')
    

    class Meta:
        managed = True
        db_table = 'MyModel'
        ordering = ['colorCode']

我想按色标订购quesryset,但不是绿色、红色、黄色产品。我想订购红色、黄色、绿色的产品。

可能吗?有没有像Java Comparator这样的东西?提前谢谢。

共有1个答案

璩华辉
2023-03-14

您可以使用Python排序函数,但要利用Django查询:

from django.db.models import Value, IntegerField, When, Case
# Don' t set the default order in the model (this also improves performance), simply write this query when you need this particular order
MyModel.objects.annotate(order=Case(When(colorCode='RED', then=0), When(colorCode='YELLOW', then=1), default=Value(2), output_field=IntegerField())).order_by('order')

否则,您可以更改模型:

from enum import Enum

class MyModel(models.Model):
   class ColorCodes(Enum):
      # In the admin interface you will see 'red' and not '0r' (so don't worry about ugly names), the second value is stored in the database and is used for order the queryset
      red = ('red', '0r')
      yellow = ('yellow', '1y')
      green  = ('green', '2g')
      
      @classmethod
      def get_value(cls, member):
         return cls[member].value[0]
  

   colorCode = CharField(db_column='color_code', null=False, default=ColorCodes.get_value('green'), max_length=2, choices=[x.value for x in ColorCodes])
    
   class Meta:
      managed = True
      db_table = 'MyModel'
      ordering = ['colorCode']
 类似资料:
  • 我正在尝试从一个简单的wooCommerce商店的订单详细信息中删除“postcustom”元框。div#postcustom按顺序显示--- 我(目前)已将其连接到: 我也尝试过将“dashboard”和“post”作为$context,但都没有用。 我也尝试过用钩子删除meta框、admin init和其他一些。 我工作在一个子主题functions.php并使用默认的ooCommerce主题

  • 问题内容: 我在框架中添加了自定义字体。我遵循了所有步骤,但是没有用。 我可以在Interface Builder中设置字体,但是在构建项目时,它不会在模拟器/设备上显示该字体。 问题答案: 我来晚了一点,但是我采用了PetahChristian的解决方案,并以扩展的形式创建了Swift版本。这对我有用。我发现,当您尝试使用常规名称来使用字体名称和大小来获取字体时,它总是在字体文件的主捆绑包中查找

  • 本文向大家介绍struts2自定义MVC框架,包括了struts2自定义MVC框架的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了struts2自定义MVC框架的方法,供大家参考,具体内容如下 自定义MVC: (首先了解Model1和Model2的概念) Model1与Model2:   Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起。   Model

  • WooCommerce默认使用post ID作为订单号,post可以是订单,也可以是产品、页面、文章或其它的custom post type,所以这个ID是不连续的,人们并不能简单的通过订单号去猜测你网站的销量。但这也给商店管理者带来一定困扰,拿到一个订单号,却无法知道是什么时候的订单,是哪个商店的订单。所以要给订单号加前缀,前缀里带上具体时间和一个序号,就能解决这个问题。 用代码自定义订单号的显

  • WooCommerce的后台订单管理支持搜索功能,要扩展搜索功能,首先要明确它能搜什么,不能搜什么。要知道这个信息,读源代码是最快的方法。我们直接找到WooCommerce订单搜索的源代码——class-wc-order-data-store-cpt.php文件里的search_orders()函数,这就是搜索调用的函数。 订单搜索的SQL语句 订单搜索会查找两个数据表——wp_postmeta和

  • 我正在使用WooCommerce REST API(http://woocommerce.github.io/woocommerce-rest-api-docs/#introduction),能够成功下载客户,订单等。 我的客户在结帐页面中添加了一些自定义字段,例如: 我希望在请求订单时能够获得这些自定义字段,例如: 目前,当我收到订单时,没有返回任何自定义字段。我试着加上 到请求URL,但这没有