【问题标题】:How can I solve this indentation problem in my Django project如何在我的 Django 项目中解决这个缩进问题
【发布时间】:2022-11-14 03:10:53
【问题描述】:

我是 Django 的初学者。 我试图在 OrderItem 类中添加一个方法。但 Visual Studio 代码显示缩进错误。 我不确定这里有什么问题。 任何人都可以帮助我,好吗?

这是代码:

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Customer(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
    name = models.CharField(max_length=200, null=True)
    email = models.CharField(max_length=200, null=True)

    def __str__(self):
        return self.name

class Product(models.Model):    
    name = models.CharField(max_length=200, null=True)
    price = models.FloatField()
    digital = models.BooleanField(default=False, null=True, blank=True)
    #image needs to be added
    image = models.ImageField(null=True, blank=True)

    def __str__(self):
        return self.name

    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = ""
    
        return URL



class Order(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True, blank=True)
    date_ordered = models.DateTimeField(auto_now_add=True)
    complete = models.BooleanField(default=False, null=True, blank=True)
    transaction_id = models.CharField(max_length=200, null=True)

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

class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
    quantity = models.IntegerField(default=1, null=True, blank=True)
    date_added = models.DateTimeField(auto_now_add=True)

    @property
    def get_total(self):
        return self.product.price * self.quantity

@property 和 get_total() 上显示缩进错误

class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
    quantity = models.IntegerField(default=0, null=True, blank=True)
    date_added = models.DateTimeField(auto_now_add=True)

    @property
    def get_total(self):
        total = self.product.price * self.quantity
        return total

请参阅随附的屏幕截图。

【问题讨论】:

  • 通过正确缩进 @property 装饰器...
  • 根据该屏幕截图和纯文本代码示例,缩进似乎是正确的。请更新问题以包含完整的错误回溯消息,以便我们了解实际发生的情况。

标签: python django


【解决方案1】:

@property 装饰器应该在方法和字段的同一级别缩进,所以:

class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
    quantity = models.IntegerField(default=1, blank=True)
    date_added = models.DateTimeField(auto_now_add=True)

    @property
    def get_total(self):
        return self.product.price * self.quantity

您可能希望 quantity 默认为 1。我也不清楚为什么这是一个可为空的字段。

作为一般经验法则,请执行不是混合空格和制表符。可能会更好总是使用空格。

【讨论】:

    猜你喜欢
    • 2022-10-19
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2022-06-14
    • 2021-11-21
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多