diff --git a/src/myaktion/model/campaign.go b/src/myaktion/model/campaign.go
index f6e65e4a63f0abb7b863f542b3adb2a93affa34e..3190642042548c93f220376fcc86c2da839538fb 100644
--- a/src/myaktion/model/campaign.go
+++ b/src/myaktion/model/campaign.go
@@ -1,5 +1,7 @@
 package model
 
+import "gorm.io/gorm"
+
 type Campaign struct {
 	ID                 uint       `json:"id" gorm:"primaryKey"`
 	Name               string     `json:"name" gorm:"notNull"`
@@ -10,3 +12,13 @@ type Campaign struct {
 	Account            Account    `json:"account" gorm:"embedded; embeddedPrefix:account_"`
 	Donations          []Donation `json:"donations" gorm:"foreignKey: CampaignID; constraint:OnUpdate:CASCADE, OnDelete:CASCADE"`
 }
+
+func (c *Campaign) AfterFind(tx *gorm.DB) (err error) {
+	var sum float64
+	result := tx.Model(&Donation{}).Select("ifnull(sum(amount),0)").Where("campaign_id = ?", c.ID).Scan(&sum)
+	if result.Error != nil {
+		return result.Error
+	}
+	c.AmountDonatedSoFar = sum
+	return nil
+}