【问题标题】:Django: DB-Query inside for a class in "models.py"Django:“models.py”中的类的 DB-Query
【发布时间】:2020-04-10 11:06:29
【问题描述】:

早安,

在 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】:

    你少了 2 分,让我来说明一下

    • 事实上,您的 Coworker 模型不是 User 模型。 我的意思是,The 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问题。

    【讨论】:

    • 谢谢,这解决了我的问题!没从这个角度看。
    猜你喜欢
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2016-11-11
    • 2011-02-06
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2020-02-08
    相关资源
    最近更新 更多