zoukankan      html  css  js  c++  java
  • Django-models中的choise

    choices

    用于页面上的选择框标签,需要先提供一个二维的二元元组,第一个元素表示存在数据库内真实的值,第二个表示页面上显示的具体内容。在浏览器页面上将显示第二个元素的值。例如:

        YEAR_IN_SCHOOL_CHOICES = (
            ('FR', 'Freshman'),
            ('SO', 'Sophomore'),
            ('JR', 'Junior'),
            ('SR', 'Senior'),
            ('GR', 'Graduate'),
        )
    

    一般来说,最好将选项定义在类里,并取一个直观的名字,如下所示:

    from django.db import models
    
    class Student(models.Model):
        FRESHMAN = 'FR'
        SOPHOMORE = 'SO'
        JUNIOR = 'JR'
        SENIOR = 'SR'
        YEAR_IN_SCHOOL_CHOICES = (
            (FRESHMAN, 'Freshman'),
            (SOPHOMORE, 'Sophomore'),
            (JUNIOR, 'Junior'),
            (SENIOR, 'Senior'),
        )
        year_in_school = models.CharField(
            max_length=2,
            choices=YEAR_IN_SCHOOL_CHOICES,
            default=FRESHMAN,
        )
    
        def is_upperclass(self):
            return self.year_in_school in (self.JUNIOR, self.SENIOR)
    

    要获取一个choices的第二元素的值,可以使用get_FOO_display()方法,其中的FOO用字段名代替。对于下面的例子:

    from django.db import models
    
    class Person(models.Model):
        SHIRT_SIZES = (
        ('S', 'Small'),
        ('M', 'Medium'),
        ('L', 'Large'),
        )
        name = models.CharField(max_length=60)
        shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)
    

    使用方法:

    >>> p = Person(name="Fred Flintstone", shirt_size="L")
    >>> p.save()
    >>> p.shirt_size
    'L'
    >>> p.get_shirt_size_display()
    'Large'
    
  • 相关阅读:
    ch5 对链接应用样式
    ch4 圆角框
    ch4 背景图像基础
    ch8 CSS 3列(等高文本列)
    ch8 高度相等的列--CSS方法
    ch8 faux列
    java基础 (四)之集合
    java基础 (二)之HashMap,HashTable,ConcurrentHashMap区别
    java基础 (三)之ConcurrentHashMap(10)未完待续~~~
    java基础 (一)之HashMap(jdk1.7)
  • 原文地址:https://www.cnblogs.com/jiumo/p/14313592.html
Copyright © 2011-2022 走看看