2012-03-22 85 views
0

我有以下型号:如何根据Django中选定的外键获取模型字段值?

class OrderDetails(models.Model): 
OrderID = models.ForeignKey(Orders) 
Product = models.ForeignKey('SystemSetup.Products', unique=False) 
Quantity = models.DecimalField('Quantity', max_digits=18, decimal_places=0, default=1) 
Price = models.DecimalField('Price', max_digits=18, decimal_places=2) 

def __unicode__(self): 
return "%s" % (self.OrderID) 

我想要得到的Price价值,但必须取决于所选择的Product

我也用内联的admin:

class OrderInlines(admin.TabularInline): 
model = OrderDetails 
extra = 1 
readonly_fields = ['Price'] 

class OrdersAdmin(admin.ModelAdmin): 
fieldsets = [ 
('Order by:', {'fields': ['CustomerID']}), 
('Detailes', {'fields': ['CashierID', 'OrderDate']}), 
] 
list_display = ('OrderID', 'CashierID', 'CustomerID', 'OrderDate') 
list_filter = ['OrderID', 'CashierID', 'CustomerID', 'OrderDate'] 
search_fields = ['OrderID', 'CashierID__EmployeeName', 'CustomerID__CustomerName', 'OrderDate'] 
inlines = [OrderInlines] 

如何计算总价格(quantity * price)

回答

0

您可以通过重写你的模型做这个的保存方法是这样的:

class OrderDetails(models.Model): 
    OrderID = models.ForeignKey(Orders) 
    Product = models.ForeignKey('SystemSetup.Products', unique=False) 
    Quantity = models.DecimalField('Quantity', max_digits=18, decimal_places=0, default=1) 
    Price = models.DecimalField('Price', max_digits=18, decimal_places=2) 

    def save(self, *args, **kwargs): 
     self.Price = self.Product.Price * self.Quantity 

     super(OrderDetails, self).save(*args, **kwargs) 
相关问题