Django中元选项

元选项(非必须)

数据库元数据就是指定义数据库各类对象结构的数据,是表级操作

1、abstract

  1. 说明

    表示模型是抽象基类

  2. 可选值

    • True

      表示模型是抽象基类

    • false

      默认值

  3. 示例代码

    class UserInfo(models.Model):
        username = models.CharField(max_length=64)
        class Meta:
            abstract = True
         
    class Person(models.Model):
        class Meta:
            abstract = True        
    

2、db_table

  1. 说明

    数据库表名,默认是模块名+类名,强烈建议你在通过 db_table 重命名数据库表名称时,使用小写字母特别是当你在使用 MySQL 作为后台数据库时

  2. 可选值

    字符串

  3. 示例代码

    class UserInfo(models.Model):
        class Meta:
            abstract = True
            db_table = 'user_info'
    

3、ordering

  1. 说明

    对象默认的顺序,获取一个对象的列表时使用 它是一个字符串的列表或元组

  2. 可选值

    前面没有“-”的字段表示升序

    “-” 前面带有可选的“-”前缀表示降序

    “?” 表示随机排序

  3. 示例代码

    class UserInfo(models.Model):
         class Meta:
             #按create_date降序排序,然后按username升序排序
             ordering = ['-create_date','username']
    

4、indexes

  1. 说明

    在模型上定义的索引列表(Django 1.11新增功能)

  2. 可选值

    列表

  3. 示例代码

    class UserInfo(models.Model):
        class Meta:
            indexes = [models.Index(fields=['name', ], name='idx_user_name')]
    

6、verbose_name

  1. 说明

    Admin后台中显示的模型名称

  2. 可选值

    中文

  3. 示例代码

    class UserInfo(models.Model):
      class Meta:  
            # 单数
            verbose_name = '用户'
    

7、verbose_name_plural

  1. 说明

    verbose_name复数形式,英语有单数和复数形式。这个就是模型对象的复数名,比如“apples”。因为我们中文通常不区分单复数,所以保持和verbose_name一致也可以。

  2. 可选值

    中文

  3. 示例代码

    class UserInfo(models.Model): 
      class Meta:  
            # 复数
            verbose_name_plural = verbose_name
    

8、managed

  1. 说明

    该元数据默认值为True,表示Django将按照既定的规则,管理数据库表的生命周期。

    如果设置为False,将不会针对当前模型创建和删除数据库表。在某些场景下,这可能有用,但更多时候,你可以忘记该选项。

  2. 示例代码

    class UserInfo(models.Model): 
      class Meta: 
            managed = Flase
    

9、其它(了解)

  1. base_manager_name,

    指定managers的名字。

  2. db_tablespace,

    指定表格空间,如果数据库不支持则忽略。

  3. default_manger_name,

    指定manager的名字。

  4. default_related_name

    指定反向关联的模型的名称,需要注意的是,这个名称应该是唯一的,建议命名中包含app和model名字以避免冲突,%(app_label)s和%(model_name)s

  5. get_latest_by

    指定model中某个可排序的字段的名称,这样当通过managers去调用lates函数的时候会返回根据排序的最新的结果。

  6. managed

    是否指明Django为当前模型创建和删除数据库表,True或者False。

  7. order_with_respect_to,

    通常用在关联对象上面,指定某个字段,使其在父对象中有序。设置之后,可以通过get_RELATED_order和set_RELATED_order进行获取关联对象的已经拍好序的主键列表或者是自定义设置其顺序。我们还可以通过get_next_in_order和get_previous_in_order,可以用于获取一个生成器。

  8. permissions

    设置创建对象时权限表中额外的权限,注意其是一个二元祖的元祖或者列表。

  9. default_permissions,

    默认为 add,change,delete。

  10. proxy

    如果为True,则表明这是另外一个模型的子类,这将会作为一个代理模型。

  11. required_db_features,

  12. required_db_vendor

    指定使用哪种数据库。

  13. select_on_save

    指定使用哪种保存数据的算法。

  14. unique_together

    用来设置不重复的字段组合。

Django 中实现下拉选项的二级联动可以使用 Ajax 技术,即在前端页面中使用 JavaScript 发送请求,后端 Django 服务器返回相应的数据,再更新页面中的下拉选项。 以下是一个简单的示例: 1. 在 models.py 中定义两个模型,例如: ```python class Country(models.Model): name = models.CharField(max_length=100) class City(models.Model): name = models.CharField(max_length=100) country = models.ForeignKey(Country, on_delete=models.CASCADE) ``` 2. 在 forms.py 中创建表单类,并使用 ModelChoiceField 定义下拉选项,例如: ```python class MyForm(forms.Form): country = forms.ModelChoiceField(queryset=Country.objects.all()) city = forms.ModelChoiceField(queryset=City.objects.none()) ``` 3. 在 HTML 模板中添加下拉选项的 HTML 代码,例如: ```html <form id="my-form"> {% csrf_token %} {{ form.as_p }} </form> ``` 4. 在 JavaScript 中监听第一个下拉选项的变化事件,例如: ```javascript $('#id_country').change(function () { var countryId = $(this).val(); $.ajax({ url: '/get-cities/', data: { 'country_id': countryId }, success: function (data) { $('#id_city').html(data); } }); }); ``` 5. 在 views.py 中实现获取第二个下拉选项的数据,例如: ```python from django.http import JsonResponse def get_cities(request): country_id = request.GET.get('country_id') cities = City.objects.filter(country_id=country_id) data = [{'id': c.id, 'name': c.name} for c in cities] return JsonResponse(data, safe=False) ``` 6. 在 urls.py 中添加相应的 URL 映射,例如: ```python from django.urls import path from . import views urlpatterns = [ path('get-cities/', views.get_cities), # 其他 URL 映射 ] ``` 通过以上步骤,可以实现 Django 中下拉选项的二级联动。当用户选择第一个选项时,会向服务器发送 Ajax 请求,服务器返回相应的数据,前端 JavaScript 更新页面中的第二个下拉选项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值