Django:在DB-Query内部查找“ models.py”中的类

问题描述 投票:0回答:1

早安,

在Django的“ models.py”内部,我想使用这些属性创建一个名为“ Coworker”的新类

class Coworker(models.Model):

    roles = (
        ('Role A', 'Role A'),
        ('Role B', 'Role B'),
    )

    fullname = models.CharField(max_length=255, null=False)
    role = models.CharField(max_length=100, null=False, choices=roles)
    supervisor = models.CharField(...?)

我还想创建一个“主管”,它应该调查该类并向我显示所有“全名”,并以“角色A”作为选择。因此,当然在开始时该字段将为空。

这可能吗?函数“ db_column”似乎不起作用。还是我做错了?

谢谢大家!

python django postgresql django-models
1个回答
0
投票

[您缺少2分,Lemme说明

  • 您具有不是User模型的Coworker模型的事实。我的意思是,同事是用户,让我们编写这个想法的代码
from django.contrib.auth import get_user_model

User = get_user_model()
class Coworker(models.Model):
    ..........
    user = models.OneToOneField(User...., on_delete=..)
    supervisor = models.OneToOneField(User...., on_delete=..)  # **

或者如果您想要多个主管,则更好,请删除**行并创建此

class Supervisor(models.Model):
    coworker_supervised = models.ForiegnKey(Coworker, on_delete...,related_name='supervisors')

这意味着supervisor_instance.corworker_supervisedcoworker.supervisors

或更好,如果主管可以监督多个用户并且该用户可以有多个主管,请使用m2m。>>

  • [DRY原理,请不要重复自己,用户具有first_namelast_name,如果需要full_name,请在用户上定义一个返回first_namlast_name并置的方法。] >

    请参阅this问题。

© www.soinside.com 2019 - 2024. All rights reserved.