Как добавить несколько внешних ключей в 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
так что я могу добавить столько сотрудников, сколько я хочу в сотрудников, но когда я получаю эту модель в представлениях новых Leave
s созданы, все, что я хочу, это один сотрудник должен показать 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', ...]