【发布时间】:2015-07-07 23:27:21
【问题描述】:
我有两个相似的类,一个是业务对象,第二个是 Django 模型。这是代码:
class Vehicle():
def __init__(self, make, model, year, miles, sold_on, sale_price, purchase_price):
self.make = make
self.model = model
self.year = year
self.miles = miles
self.sold_on = sold_on
self.sale_price = sale_price
self.purchase_price = purchase_price
def __str__(self):
return 'Vehicle: %s %s %s %s' % (self.make, self.model, self.year, self.miles)
def calculate_sale_price(self):
if self.miles > 0 and self.miles <= 20000:
return 15500
elif self.miles > 20000 and self.miles <= 50000:
return 11200
elif self.miles > 50000 and self.miles <= 100000:
return 8550
elif self.miles > 100000 and self.miles <= 200000:
return 4645
else:
return 2300
def is_vehicle_luxury(self):
if self.make in ['Cadilac', 'Lexus', 'BMW']:
return True
if self.year in [2000, 2015, 1945, 1973]:
return True
models.py
class Vehicle(models.Model):
make = models.CharField(max_length=300)
model = models.CharField(max_length=300)
year = models.IntegerField()
miles = models.IntegerField()
sold_on = models.DateTimeField(null=True, blank=True)
sale_price = models.FloatField(null=True, blank=True)
purchase_price = models.FloatField(null=True, blank=True)
所以问题是:这两个类应该合并为一个吗?或者创建另一段代码来创建业务对象,然后从业务对象填充模型。那么处理这个问题的最佳方法是什么?
【问题讨论】:
-
澄清一下,问题不在于如何将新记录保存到 Django 模型中。我已经知道该怎么做,问题更多的是如何避免编码中的这种冗余。
-
这取决于你真正想要什么。一般来说,如果你有重复,那就不好了,尤其是你有两个几乎相同的类。
-
这是一个非常有趣的问题。无视投票!
标签: python django class oop model