Django admin model calc something before save to db

8 views
Skip to first unread message

Brook Liu

unread,
Oct 27, 2018, 8:22:42 AM10/27/18
to Django users
#models.py
'''orderMain'''
class OrderMain(models.Model):
    orderId = models.UUIDField(primary_key=True, max_length=30)#sum(OrderDetail.amount)
    sumAmount = models.DecimalField(max_digits=13,decimal_places=3,null=True) #sum(orderDetail.amount)

    class Meta:
        db_table = 'orderMain'
 

    def __str__(self):
        return self.orderId

    def save(self, *args, **kwargs):
        super(OrderMain, self).save(*args, **kwargs)

'''orderDetail'''
class OrderDetail(models.Model):
    orderId = models.ForeignKey(OrderMain,to_field='orderId',db_column='orderId',on_delete=models.CASCADE)
    amount = models.DecimalField(max_digits=8,decimal_places=2)

    class Meta:
        db_table = 'orderDetail'

    def __str__(self):
        return ''

#admin.py
class OrderDetailInLine(admin.TabularInline):
    model = OrderDetail
    extra = 1

@admin.register(OrderMain)
class OrderMainAdmin(admin.ModelAdmin):
    inlines = [OrderDetailInLine,]
    list_display = ['orderId','sumAmount']
    readonly_fields = ['orderId','sumAmount']
    fields = ('orderId', 'sumAmount')



#Questions: Can I calc orderMain.sumAmount = sum(orderDetail.amount)  before objects save to db?
Reply all
Reply to author
Forward
0 new messages