Django模型字段来填充另一个字段



我又回来了,我已经在这个上面超过48小时了,仍然找不到回应。

我有这个模型。

职位表有现场工程师,现场经理,暖通空调工程师等

工程师每个人只有一个职位,我希望manager字段只在创建的工程师有Site manager职位时才填充。如果创建了工程师,则经理字段将是具有站点经理职位的工程师的下拉列表。

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字段,即使他们不是Site manager。

请帮

我可以通过编辑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。

最新更新