2017-09-14 19 views
0

私はDjangoの初心者です。 私は新しいLeave Sが作成されたビューでこのモデルを取得するときに、2つのモデル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) 

は今、私は従業員 で私が望むように多くの葉を追加できるようにadmin.py に従業員とのインライン休暇モデルを持っていますが、持っています私が欲しいのは、1人の従業員がtotal = number of daysと表示する必要がありますが、新しい葉が作成されます。ここでロジックを構築できないため、私は固執しています。

+1

は、ビューのコードは –

+0

あなたの予想される出力は何してください示して?あなたは代わりに葉を残したいですか?なぜあなたはより多くのforeignkeyが必要なのですか –

+0

申し訳ありませんが、私は明らかにしておきたいはずです。各employee_idの合計日数を合計します。 – sourabhah

答えて

1

あなたが求めているものは正確ではありませんが、私の推測では、従業員の不在日の総数を管理者に表示したいとします。あなたのモデルにaggregationSum特に、カスタムメソッドを使用することができます。

# 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', ...] 
+0

あなたが答えている間に入力していました。あなたの集計ソリューションは私の提案をはるかに超えています:) –

関連する問題