簡體   English   中英

Django來自同一模型的兩個ForeignKey

[英]Django two ForeignKey from same model

Pegawai模型中,我需要兩個ForeignKey來:

  1. Jabatan模型
  2. Jabatan模型的unit_kerja字段

如何將這些應用於我的Pegawai模型? 只有第一個有效。

這是我的models.py

from django.db import models
from django.urls import reverse
# Create your models here.
class UnitKerja(models.Model):
    nama_unit_kerja     = models.CharField(max_length=100)
    def get_absolute_url(self):
        return reverse("users:unitkerja")

    def __str__(self):
        return self.nama_unit_kerja

class Jabatan(models.Model):
    nama_jabatan        = models.CharField(max_length=100)
    level_jabatan       = models.IntegerField()
    unit_kerja          = models.ForeignKey(UnitKerja, on_delete=models.CASCADE, blank=True, null=True)

    def get_absolute_url(self):
        return reverse("users:jabatan")

    def __str__(self):
        return self.nama_jabatan

class Pegawai(models.Model):
        nip                 = models.CharField(max_length=100, unique=True)
        nama_pegawai        = models.CharField(max_length=100)
        alamat              = models.CharField(max_length=255)
        jabatan             = models.ForeignKey(Jabatan, on_delete=models.CASCADE)
        #this line#    
        unit_kerja          = models.ForeignKey(Jabatan.unit_kerja, on_delete=models.CASCADE, blank=True, null=True)

    def get_absolute_url(self):
        return reverse("users:pegawai")

    def __str__(self):
        return self.pegawai

沒有字段的外鍵之類的東西,但是無論如何您都不需要它。 您始終可以使用多次遍歷來訪問UnitKerja實例,例如:

my_unit_kerja = my_pegawai.jabatan.unit_kerja

或者,如果上面的工作太多,您可以擁有一個助手屬性:

class Pegawai(models.Model):
    ...
    @property
    def unit_kerja(self):
        return self.jabatan.unit_kerja

然后簡單地使用

my_pegawai.unit_kerja

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM