Как добавить несколько внешних ключей в 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)

Теперь у меня есть встроенная модель Leave с сотрудником в admin.pyтак что я могу добавить столько сотрудников, сколько я хочу в сотрудников, но когда я получаю эту модель в представлениях новых Leaves созданы, все, что я хочу, это один сотрудник должен показать total = number of days, но это создает новые листья, не в состоянии построить какую-либо логику здесь, я застрял, пожалуйста, спросите, если вы не понимаете, что я спрашиваю.

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', ...]
Другие вопросы по тегам