2012-03-22 7 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に依存する必要があります。

私も管理者にインラインを使用します。

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) 
関連する問題