首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Model字段以填充另一个字段

Django Model字段以填充另一个字段
EN

Stack Overflow用户
提问于 2021-07-29 21:30:25
回答 1查看 44关注 0票数 0

我又回来了,我已经研究了超过48小时,仍然找不到对此的回应。

我有这个模型。

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

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

代码语言:javascript
复制
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

此代码仅使用工程师的姓名填充经理字段,即使他们不是站点经理。

请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2021-07-30 11:27:18

我可以通过编辑manager字段来解决这个问题:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68576855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档