Esempio n. 1
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
Esempio n. 2
0
class Product(BaseModel):
    """
    商品
    """
    name = models.CharField(max_length=100, verbose_name=('商品名称'))

    category = fields.ForeignKey(ProductCategory,
                                 null=True,
                                 blank=True,
                                 verbose_name=('商品品类'),
                                 on_delete=models.CASCADE)
    desc = UETextField(null=True, blank=True, verbose_name=('商品详情'))

    hot = SwitchField(default=False, verbose_name='热门')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = ('商品')
        verbose_name_plural = verbose_name
Esempio n. 3
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,
    )
Esempio n. 4
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