社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django-models-访问类中字段的值

DL8 • 5 年前 • 1536 次点击  
class Tag(models.Model):
    '''Items have tag will have according discount percentage'''

    tag_discount_percentage = models.IntegerField()

    slogan_default = 'Purchase NOW for extra {}% off!'.format(tag_discount_percentage.get_prep_value(value))

    slogan = models.CharField(max_length=200, default=slogan_default)

    def __str__(self):
        return self.slogan

此代码引发异常:

关了。格式(标记折扣百分比。获取准备值)名称错误:

乌尔格!

tag_discount_percentage 它本身就是 <django.db.models.fields.IntegerField> 但我想要价值


问题2:我可以把数字限制设置为 IntegerField ? 我只找到了 max_length 这会提示一个警告说“将忽略最大长度”。。。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55311
 
1536 次点击  
文章 [ 2 ]  |  最新文章 5 年前
DL8
Reply   •   1 楼
DL8    5 年前

试图回答问题1:

class Tag(models.Model):
    '''Items have tag will have according discount percentage'''
    tag_discount_percentage = models.IntegerField(default=0)
    slogan = models.CharField(max_length=200, blank=True)

    def __str__(self):
        return self.slogan if self.slogan else self.slogan_default

    @property
    def slogan_default(self):
        return 'Purchase NOW for the extra {}% off!'.format(self.tag_discount_percentage)

呃。。 干杯~

Charnel
Reply   •   2 楼
Charnel    5 年前

回答你的第二个问题-你所说的“数字限制”并不明显。如果您有兴趣防止该值超出定义的范围,则可以使用 validators

from django.core.validators import MaxValueValidator, MinValueValidator

class Tag(models.Model):
    '''Items have tag will have according discount percentage'''
    tag_discount_percentage = models.IntegerField(default=0, validators=[MinValueValidator(1), MaxValueValidator(100)])

否则,如果要限制小数位数,则应使用 decimal 字段而不是整数。

default agrument可以是一个可调用的,但不需要引用它所用于的对象。你可以考虑使用 pre_save 而是发出信号,根据其他字段“默认”设置字段值。