Ejemplo n.º 1
0
class StudentArea(models.Model):
    name = fields.CharField(max_length=32,
                            verbose_name='地区',
                            show_word_limit=True)

    def __str__(self):
        return self.name
Ejemplo n.º 2
0
class Layer(models.Model):
    name = fields.CharField(max_length=32, verbose_name='名字')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Layer Action弹出框'
        verbose_name_plural = 'Layer Action弹出框'
Ejemplo n.º 3
0
class ManyToManyModel(models.Model):
    name = fields.CharField(max_length=128, verbose_name='名字', default='张三')
    many_to_many = fields.ManyToManyField(StudentManyToManyModel, blank=True, verbose_name='多对多字段')

    class Meta:
        verbose_name = '多对多 Select'
        verbose_name_plural = '多对多 Select'

    def __str__(self):
        return self.name
Ejemplo n.º 4
0
class OneToOneModel(models.Model):
    name = fields.CharField(max_length=128, verbose_name='名字', default='张三')
    one_to_one = fields.OneToOneField(StudentOneToOneModel, on_delete=models.SET_NULL, null=True, blank=True,
                                      verbose_name='一对一字段', filterable=True)

    class Meta:
        verbose_name = '一对一 Select'
        verbose_name_plural = '一对一 Select'

    def __str__(self):
        return self.name
Ejemplo n.º 5
0
class StudentModel(models.Model):
    name = fields.CharField(max_length=128, verbose_name='名字', default='张三')

    sex_choices = (
        (0, '男'),
        (1, '女'),
        (2, '未知'),
    )
    sex = fields.RadioField(verbose_name='性别', default=0, choices=sex_choices)

    star = fields.RateField(verbose_name='评价', default=5, help_text='给用户评级')

    money = fields.InputNumberField(verbose_name='存款', default=0)

    score = fields.SliderField(verbose_name='考试分数', default=100)

    # ForeignKey和OneToOneField、ManyToManyField 都支持两个参数
    # action 是指 select在搜索的时候 请求的url,后台只需要返回 一个数组就可以搜索数据了。[{'text':'张三','id':'123'}]
    # queryset 是指 select 默认展示数据的时候 框架会调用get_queryset 可以进行数据过滤这一类处理。

    # 外键字段 如果不指定action,可以在admin中配置:autocomplete_fields = ('classes',) 就可以自动搜索了。不配置两者 就只能列表过滤
    classes = fields.ForeignKey(
        StudentClasses,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        verbose_name='班级',
        help_text='一对多',
        clearable=True,
        placeholder='选择班级',
        queryset=get_student_class_queryset,
        # 这里这里可以传入function,但是返回的必须是个queryset,也可以传入queryset
        limit=5,  # 这里限制默认显示的结果数量,设置下可以防止爆内存
    )

    area = fields.ForeignKey(
        StudentArea,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        verbose_name='地区',
        help_text='一对多',
        clearable=True,
        placeholder='选择地区',
        # 指定自定义的url
        action='/area/search')

    class Meta:
        verbose_name = '一对多 Select'
        verbose_name_plural = '一对多 Select'

    def __str__(self):
        return self.name
Ejemplo n.º 6
0
class UUIDKeyModel(models.Model):
    uid = models.UUIDField(primary_key=True,
                           verbose_name='uuid',
                           default=get_uuid,
                           editable=False)
    name = fields.CharField(max_length=32, verbose_name='名字')

    def __str__(self):
        return str(self.uid)

    class Meta:
        verbose_name = 'UUID支持'
        verbose_name_plural = 'UUID支持'
Ejemplo n.º 7
0
class ExtInfo(models.Model):
    name1 = fields.CharField(max_length=128,
                             verbose_name='字段1',
                             null=True,
                             blank=True)
    name2 = fields.CharField(max_length=128,
                             verbose_name='字段2',
                             null=True,
                             blank=True)
    name3 = fields.CharField(max_length=128,
                             verbose_name='字段3',
                             null=True,
                             blank=True)
    name4 = fields.CharField(max_length=128,
                             verbose_name='字段4',
                             null=True,
                             blank=True)
    title = fields.ForeignKey(
        Title,
        on_delete=models.SET_NULL,
        blank=False,
        null=True,
    )
Ejemplo n.º 8
0
class TransferModel(models.Model):
    name = fields.CharField(max_length=32, verbose_name='名字')

    transfer = fields.TransferField(TransferManyToManyModel, blank=True, verbose_name='穿梭框',
                                    help_text='基于many_to_many字段',
                                    filterable=True,  # 允许列表搜索
                                    placeholder='输入关键字搜索',  # 搜索框占位符
                                    titles=['待选', '已选'],  # 自定义穿梭框title
                                    button_texts=['往左', '往右']  # 自定义按钮文本
                                    )

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Transfer 穿梭框'
        verbose_name_plural = 'Transfer 穿梭框'
Ejemplo n.º 9
0
class Department(models.Model):
    name = fields.CharField(max_length=128,
                            verbose_name='部门名',
                            help_text='一个部门的名字应该唯一',
                            unique=True,
                            db_index=True)
    create_time = fields.DateTimeField(verbose_name='创建时间', auto_now=True)

    class Meta:
        verbose_name = "部门"
        verbose_name_plural = "部门管理"

    """
        如果有__unicode__ 方法,将会优先调用,没有在调用__str__方法
    """

    def __unicode__(self):
        return '部门' + self.name

    def __str__(self):
        return self.name
Ejemplo n.º 10
0
class CharModel(models.Model):
    """
    文本输入框,包含:input、password、textarea
    """

    # 这里的max_length是数据库字段的长度,也是界面上文本框可输入的长度
    # type属性 对应input原生的type

    # style 原生属性,可通过width设置宽度

    # 普通文本框
    f1 = fields.CharField(verbose_name='基础输入框', max_length=128, input_type='text', placeholder='单行输入',
                          autocomplete=False, style='width:100px;color:red;')

    # 多行文本框
    # 如果设置了style的高度,就不要设置 rows属性了,不然样式会乱掉
    f2 = fields.CharField(verbose_name='多行输入', max_length=128, input_type='textarea', show_word_limit=True,
                          placeholder='多行输入', clearable=False,
                          style='width:500px;', rows=20)
    # 密码输入框
    f3 = fields.CharField(verbose_name='密码', placeholder='请输入密码', max_length=128, show_password=True)

    f4 = fields.CharField(verbose_name='左边带图标', suffix_icon="el-icon-date", max_length=128)
    f5 = fields.CharField(verbose_name='右边带图标', prefix_icon="el-icon-search", max_length=128)

    f6 = fields.CharField(verbose_name='显示可输入长度', max_length=128, show_word_limit=True)

    # solt取值:prepend、append
    f7 = fields.CharField(verbose_name='复合输入框', max_length=128, slot='prepend', slot_text='https://', null=True,
                          blank=True)

    f8 = fields.CharField(verbose_name='复合输入框', max_length=128, slot='append', slot_text='.com', null=True, blank=True)

    class Meta:
        verbose_name = 'Char文本输入框'
        verbose_name_plural = 'Char文本输入框'
Ejemplo n.º 11
0
class Employe(models.Model):
    name = fields.CharField(max_length=128,
                            verbose_name='名称',
                            help_text='员工的名字',
                            null=False,
                            blank=False,
                            db_index=True)

    avatar_img = fields.ImageField(verbose_name='照片',
                                   null=True,
                                   blank=False,
                                   help_text='员工的照片,在列表会默认显示为图片')

    gender_choices = (
        (0, '未知'),
        (1, '男'),
        (2, '女'),
    )
    # images = fields.ManyToManyField(Image,  blank=True, verbose_name='照片列表')

    gender = fields.IntegerField(choices=gender_choices,
                                 verbose_name='性别',
                                 default=0)

    idCard = fields.CharField(max_length=18,
                              verbose_name='身份证号',
                              help_text='18位的身份证号码',
                              blank=True,
                              null=True)
    phone = fields.CharField(max_length=11, verbose_name='手机号')

    birthday = fields.DateField(verbose_name='生日')
    time = fields.TimeField(verbose_name='时间', auto_now=True)

    department = fields.ForeignKey(Department,
                                   on_delete=models.SET_NULL,
                                   blank=False,
                                   null=True,
                                   verbose_name='部门',
                                   db_index=True)

    title = fields.ForeignKey(Title,
                              on_delete=models.SET_NULL,
                              blank=False,
                              null=True,
                              verbose_name='职务',
                              db_index=True)

    enable = fields.SwitchField(verbose_name='状态', default=True)
    create_time = fields.DateTimeField(verbose_name='创建时间', auto_now=True)

    update_time = fields.DateTimeField(verbose_name='更新时间', auto_now=True)

    def test1(self):
        return format_html('<img src="{}" height="50" width="50">',
                           'https://www.88cto.com/static/images/logo.png')

    def test2(self):
        if self.title:
            return format_html('<span style="color:red;">{}</span>',
                               self.title.name)
        else:
            if self.department:
                return format_html('<span style="color:red;">{}</span>',
                                   self.department.name)

    def department_id(self):
        if self.department:
            return self.department.id

        return ""

    department_id.short_description = '部门id'
    test2.short_description = '测试'

    class Meta:
        verbose_name = "员工"
        verbose_name_plural = "员工管理"
        permissions = (('test', 'test111'), ('test2', 'test222'), ('Simpleui',
                                                                   'simpleui'))

    def __str__(self):
        return self.name