gpt4 book ai didi

python - 向 Django 字段添加附加属性

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:10 25 4
gpt4 key购买 nike

考虑 Django 中的这个 Family 模型:

class Family(models.Model):
EMPLOYEE = 'Employee'
PARTNER = 'Partner'
BIRTH_PARENT_CHOICES = (
(EMPLOYEE, EMPLOYEE),
(PARTNER, PARTNER),
)
employee_user = models.OneToOneField(User, blank=True, null=True, related_name='employee_family')
partner_user = models.OneToOneField(User, blank=True, null=True, related_name='partner_family')
employee_first_name = models.CharField(max_length=255, blank=True)
employee_last_name = models.CharField(max_length=255, blank=True)
employee_email = models.CharField(max_length=255, blank=True)
employee_phone = models.CharField(max_length=255, blank=True)
partner_first_name = models.CharField(max_length=255, blank=True)
partner_last_name = models.CharField(max_length=255, blank=True)
partner_email = models.CharField(max_length=255, blank=True)
partner_phone = models.CharField(max_length=255, blank=True)
point_of_contact = models.CharField(max_length=255, choices=BIRTH_PARENT_CHOICES)

家庭 由一名雇员和一名合作伙伴组成,两者都有不同的属性(用户、名字、姓氏、电子邮件、电话)。还有一个 point_of_contact 字段,它可以是 'Employee''Partner'

我想做的是,在 Family 的实例 family 上,做类似的事情

family.point_of_contact.phone_number

如果 family.point_of_contact == Family.EMPLOYEE 将解析为 family.employee_phone_number,否则解析为 family.partner_phone_number,对于 first_name, last_name

据我所知 https://docs.djangoproject.com/en/2.0/ref/models/fields/ ,但是,不可能在 Django 字段上定义附加属性。我可以通过其他方式做到这一点吗?

最佳答案

不,为此,您需要创建一个单独的模型 Contact 并使用 OneToOneFieldFamily 加入它如果每个家庭只能有一个联系人,或者如果每个家庭可以有多个联系人,则在您的 Contact 模型中使用 ForeignKey

关于python - 向 Django 字段添加附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com