簡體   English   中英

用於填充另一個字段的 Django 模型字段

[英]Django Model field to populate another field

我又回來了,我已經在這個問題上超過 48 小時了,仍然找不到對此的回應。

我有這個模型。

職位表有現場工程師、現場經理、暖通空調工程師等

工程師每個只有一個職位,我希望只有在創建的工程師具有站點經理職位時才填充經理字段。 如果創建了工程師,則經理字段將是具有站點經理職位的工程師的下拉列表。

from django.db import models

class Position(models.Model):
    name = models.CharField(max_length=100, default='Site Engineer')

    def __str__(self):
        return self.name


class Engineers(models.Model):

    region = (
       ('SS', 'South-South'), ('SW', 'South-West'), ('SE', 'South-East'),
       ('NE', 'North-East'), ('NW', 'North-West'), ('NC', 'North-Central'),
    )

    firstname = models.CharField(max_length=20)
    lastname = models.CharField(max_length=20)
    email = models.EmailField(max_length=50)
    username = models.CharField(max_length=20, default='Leave Blank', unique=True)
    phone = models.CharField(max_length=11)
    position = models.ForeignKey(Position, on_delete=models.DO_NOTHING)
    workarea = models.CharField(max_length=20, choices=region)
    manager = models.CharField(verbose_name='Site Manager', max_length=80, default=None)


    def save(self, *args, **kwargs):
        self.username = self.firstname +'.'+self.lastname
        self.manager = self.firstname +' '+self.lastname

        super(Engineers, self).save(*args, **kwargs)
            
    def __str__(self):
        return self.firstname + ' ' + self.lastname

此代碼僅使用工程師的姓名填充經理字段,即使他們不是站點經理。

請幫忙

我能夠通過將 manager 字段編輯為以下內容來解決此問題:

manager = models.ForeignKey('self' , on_delete=models.PROTECT, blank=True, db_index=False, related_name='Manager')

如此處所示https://docs.djangoproject.com/en/3.2/ref/models/fields/#module-django.db.models.fields.related

不過,請務必將 db_index 設置為 false。

暫無
暫無

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

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