I have a model with several fields. And I wanted to add another field in django-admin (list_display), where it is the sum of all fields.
Model's
class Model1(models.Model):
field1 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field2 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field3 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field3 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field4 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
def __str__(self):
return str(self.id)
Model's Admin
class Model1Admin(admin.ModelAdmin):
model = Model1
list_display = ('field1','field2',<!--Sum of (field1,field2,field3,field4,field5-->)
admin.site.register(Modell,Model1Admin)
i am using the last version of django.
if you want you can do something like that:
1- Create a property in your model:
class Model1(models.Model):
field1 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field2 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field3 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field3 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
field4 = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=8)
def __str__(self):
return str(self.id)
@property
def final_sum(self):
return self.field1 + self.field2 + self.field3 + self.field4 + self.field5
2- Then use it in your admin.py
class Model1Admin(admin.ModelAdmin):
model = Model1
list_display = ('final_sum', 'field1','field2', )
admin.site.register(Modell,Model1Admin)