【问题标题】:How to solve price error in Django when I am displaying data in my template?当我在模板中显示数据时,如何解决 Django 中的价格错误?
【发布时间】:2020-12-16 16:11:42
【问题描述】:

我正在尝试将Laccrore 中的价格转换为Indian numbering system。值存储在 minprice' in this format (10000000), then it will display on my homepage in this format (1 cr), but I am getting this error ('>=' 在 'NoneType' 和 'int' 的实例之间不支持 `) 每当我打开任何项目时都会出现在我的网站中。我该如何解决这个问题?

这是我的models.py 文件:

class Project(models.Model):
    name=models.CharField(null=True, 
                          max_length=114,
                          help_text=f"Type: string, Values: Enter Project Name.")

    slug=models.SlugField(null=True, 
                          unique=True,
                          max_length=114,
                          help_text=f"Type: string, Values: Enter Project Slug.")

这是我的相关型号名称,projectdetailsOneToOne 关系:

class Detail(models.Model):
        project = models.OneToOneField(Project, related_name='project_details', on_delete=models.CASCADE)
        minprice = models.IntegerField(null=True,
                                    blank=True,
                                    verbose_name="Minimum Price",
                                    help_text=f"Type: Int, Values: Enter Minimum Price")
        
        
        maxprice = models.IntegerField(null=True,
                                    blank=True, 
                                    verbose_name='Maximum Price',
                                    help_text=f"Type: Int, Values: Enter Maximum Price")    
        @property                            
        def min_price_tag(self):
            if self.minprice >=1000 and self.minprice <=99999:
                self.minprice=self.minprice//1000
                return f"{self.minprice} K"  
            elif self.minprice>=100000 and self.minprice<=9999999:
                self.minprice=self.minprice//100000
                return f"{self.minprice} Lac" 
            else:
                self.minprice=self.minprice/10000000
                return f'{self.minprice} Cr'
            return str(self.minprice) if self.minprice is not None else ""    
    
        @property                            
        def max_price_tag(self):
            if self.maxprice >=1000 and self.maxprice <=99999:
                self.maxprice=self.maxprice//1000
                return f"{self.maxprice} K"  
            elif self.maxprice>=100000 and self.maxprice<=9999999:
                self.maxprice=self.maxprice//100000
                return f"{self.maxprice} Lac" 
            else:
                self.maxprice=self.maxprice/10000000
                return f'{self.maxprice} Cr'
            return str(self.maxprice) if self.maxprice is not None else "" 

这是我的 project.html 文件,我在其中显示数据

{% for i in project %}
    <div class="col-md-3 col-sm-12">
    <div class="single-property-box">
        <a class="trend-right float-right">
            <div class="trend-open">
                <p>
                    ₹ {{i.project_details.min_price_tag}} - ₹{{i.project_details.max_price_tag}}
                </p>
            </div>
        </a>
   </div>
    </div>
 {% endfor %} 

【问题讨论】:

    标签: python django django-models django-views django-templates


    【解决方案1】:

    错误可能是因为您将整数字段都设置为 null=True、blank=True,使它们成为必填项。

    【讨论】:

    • 是的,null=True,blank=True。更改@property代码后是否可以解决..
    • 在进行比较检查之前在属性代码中设置条件以检查 self.min_price 和 self.max_price 是否不是 None。
    猜你喜欢
    • 2021-12-17
    • 2016-04-01
    • 2016-05-06
    • 1970-01-01
    • 2019-02-01
    • 2021-04-21
    • 2018-02-24
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多