<tfoot id='kHN8x'></tfoot>

      <i id='kHN8x'><tr id='kHN8x'><dt id='kHN8x'><q id='kHN8x'><span id='kHN8x'><b id='kHN8x'><form id='kHN8x'><ins id='kHN8x'></ins><ul id='kHN8x'></ul><sub id='kHN8x'></sub></form><legend id='kHN8x'></legend><bdo id='kHN8x'><pre id='kHN8x'><center id='kHN8x'></center></pre></bdo></b><th id='kHN8x'></th></span></q></dt></tr></i><div id='kHN8x'><tfoot id='kHN8x'></tfoot><dl id='kHN8x'><fieldset id='kHN8x'></fieldset></dl></div>
        <bdo id='kHN8x'></bdo><ul id='kHN8x'></ul>
      <legend id='kHN8x'><style id='kHN8x'><dir id='kHN8x'><q id='kHN8x'></q></dir></style></legend>

    1. <small id='kHN8x'></small><noframes id='kHN8x'>

    2. django自定义Field实现一个字段存储以逗号分隔的字符串

      要实现一个以逗号分隔的字符串字段,可以使用Django的自定义Field来实现。
          <tbody id='SXyWH'></tbody>
      1. <i id='SXyWH'><tr id='SXyWH'><dt id='SXyWH'><q id='SXyWH'><span id='SXyWH'><b id='SXyWH'><form id='SXyWH'><ins id='SXyWH'></ins><ul id='SXyWH'></ul><sub id='SXyWH'></sub></form><legend id='SXyWH'></legend><bdo id='SXyWH'><pre id='SXyWH'><center id='SXyWH'></center></pre></bdo></b><th id='SXyWH'></th></span></q></dt></tr></i><div id='SXyWH'><tfoot id='SXyWH'></tfoot><dl id='SXyWH'><fieldset id='SXyWH'></fieldset></dl></div>

          <tfoot id='SXyWH'></tfoot>

          • <bdo id='SXyWH'></bdo><ul id='SXyWH'></ul>
            1. <small id='SXyWH'></small><noframes id='SXyWH'>

                <legend id='SXyWH'><style id='SXyWH'><dir id='SXyWH'><q id='SXyWH'></q></dir></style></legend>

                要实现一个以逗号分隔的字符串字段,可以使用Django的自定义Field来实现。

                步骤如下:

                1. 创建一个新的Django App

                首先要创建一个新的Django应用程序,例如 "comma_field"。

                使用以下命令创建:

                $ python manage.py startapp comma_field
                

                2. 定义一个CommaSeparatedField类

                在新创建的应用程序的 models.py 文件中,定义一个 CommaSeparatedField 类,继承自 Django 的 Field 类,然后实现 .db_type() 方法和 .to_python().get_prep_value() 方法。其中:

                • .db_type() 方法返回字段所使用的数据库类型,这里设为 VARCHAR(255)
                • .to_python() 将从数据库中获取的数据转换为Python对象;
                • .get_prep_value() 将Python对象转换为Django可用的值。
                from django.db import models
                
                class CommaSeparatedField(models.Field):
                
                    def db_type(self, connection):
                        return 'VARCHAR(255)'
                
                    def to_python(self, value):
                        if value is None:
                            return []
                        return [item.strip().lower() for item in value.split(',')]
                
                    def get_prep_value(self, value):
                        if value is None:
                            return None
                        return ','.join([str(s) for s in value])
                

                3. 在模型中使用

                在需要使用以逗号分隔的字符串字段的模型中,导入刚定义好的 CommaSeparatedField 类,然后在定义字段时直接使用 CommaSeparatedField 类。

                from django.db import models
                from comma_field.models import CommaSeparatedField
                
                class MyModel(models.Model):
                    my_field = CommaSeparatedField()
                    # 其他字段省略
                

                示例1. 字符串的写入和读取:

                obj = MyModel.objects.create(my_field='A, b, c, d')  # 写入
                assert obj.my_field == ['a', 'b', 'c', 'd']  # 读取
                

                示例2. 使用in查询操作符:

                如果需要使用 in 查询操作符的话,需要自定义过滤条件表达式,将整个字符串用逗号分割后,与某个值逐个比较。

                from django.db.models.lookups import Exact
                
                class CommaSeparatedExact(Exact):
                
                    def process_rhs(self, compiler, connection):
                        rhs, rhs_params = super().process_rhs(compiler, connection)
                        return "({})".format(','.join(["%s"] * len(rhs_params))), rhs_params
                
                MyModel.objects.filter(my_field__in=['a', 'c'], my_field__exact=CommaSeparatedExact('b'))  
                # SELECT * FROM myapp_mymodel WHERE my_field IN ('a', 'c') AND my_field = 'b'
                
                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                Python中有三个内置函数eval()、exec()和compile()来执行动态代码。这些函数能够从字符串参数中读取Python代码并在运行时执行该代码。但是,使用这些函数时必须小心,因为它们的不当使用可能会导致安全漏洞。
                在Python中,下载网络文本数据到本地内存是常见的操作之一。本文将介绍四种常见的下载网络文本数据到本地内存的实现方法,并提供示例说明。
                来给你详细讲解下Python 二进制字节流数据的读取操作(bytes与bitstring)。
                Python 3.x 是 Python 2.x 的下一个重大版本,其中有一些值得注意的区别。 Python 3.0中包含了许多不兼容的变化,这意味着在迁移到3.0之前,必须进行代码更改和测试。本文将介绍主要的差异,并给出一些实例来说明不同点。
                要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤:
                在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下:
                  <bdo id='0xjqB'></bdo><ul id='0xjqB'></ul>
                  <legend id='0xjqB'><style id='0xjqB'><dir id='0xjqB'><q id='0xjqB'></q></dir></style></legend>

                • <tfoot id='0xjqB'></tfoot>
                    <tbody id='0xjqB'></tbody>
                      <i id='0xjqB'><tr id='0xjqB'><dt id='0xjqB'><q id='0xjqB'><span id='0xjqB'><b id='0xjqB'><form id='0xjqB'><ins id='0xjqB'></ins><ul id='0xjqB'></ul><sub id='0xjqB'></sub></form><legend id='0xjqB'></legend><bdo id='0xjqB'><pre id='0xjqB'><center id='0xjqB'></center></pre></bdo></b><th id='0xjqB'></th></span></q></dt></tr></i><div id='0xjqB'><tfoot id='0xjqB'></tfoot><dl id='0xjqB'><fieldset id='0xjqB'></fieldset></dl></div>

                      <small id='0xjqB'></small><noframes id='0xjqB'>