0

我是 Django 的初学者。我有两个模型

class Employee(models.Model):
    full_name = models.CharField(max_length=120,default=None)
    designation = models.CharField(max_length=80,default=None)

class Leave(models.Model):
    employee = models.ForeignKey(Employee, related_name='employee')
    number_of_days = models.IntegerField(default=0)

现在我有 Employee 的内联休假模型,admin.py 这样我就可以在员工中添加尽可能多的叶子但是当我在Leave创建新的视图中检索这个模型时,我想要的只是一个员工应该显示total = number of days,但它会创建新的叶子,而不是能够在这里建立任何逻辑我被卡住了,如果你不明白我在问什么,请询问。

4

1 回答 1

1

不完全确定你在问什么,但我猜你想在管理员中显示员工缺勤的总天数。您可以在模型上使用聚合Sum特别是自定义方法:

# models
from django.db.models import Sum

class Employee(models.Model):
    def absent_days(self):
        return self.leaves.aggregate(s=Sum('number_of_days'))['s'] or 0
    absent_days.short_description = 'Absent days'  # used as column header/field label

class Leave(models.Model):
    # note the changed related name!
    employee = models.ForeignKey(Employee, related_name='leaves')

# admin
class EmployeeAdmin(admin.ModelAdmin):
    readonly_fields = [..., 'absent_days', ...]
    fields = [..., 'absent_days', ...]
    list_display = [..., 'absent_days', ...]
于 2017-09-14T07:08:30.127 回答