我想创建一个模型,其中用户拥有多家公司一定数量的股份。看来我应该使用 Django 中间模型关系,但我不确定如何将中间模型应用到内置 Django 用户模型。
目前,公司与股东(用户)之间存在多对多关系,如何为每个特定的公司股东关系添加股份数量?
class Company(models.Model):
name = models.CharField(max_length=200)
shareholder = models.ManyToManyField(User, blank=True)
我可能会这样做:
from django.db import models
from django.contrib.auth.models import User
class Shareholder(models.Model):
name = models.CharField(max_length=128)
user = models.OneToOneField(to=User, related_name='shareholder_profile')
def __str__(self):
return self.name
class Company(models.Model):
name = models.CharField(max_length=128)
shareholders = models.ManyToManyField(Shareholder, through='Shareholding')
def __str__(self):
return self.name
class Shareholding(models.Model):
shareholder = models.ForeignKey(Shareholder, on_delete=models.CASCADE)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
date_shares_purchased = models.DateField()
number_of_shares = models.PositiveIntegerField()
我不会直接使用用户模型,而是创建一个与用户具有一对一关系的股东模型。然后,我将通过股权中间模型创建股东和公司之间的多对多关系。
这种使用与 Profile 模型的一对一关系来扩展 User 模型的技术在原始文档 https://docs.djangoproject.com/en/2.0/topics/auth/customizing/#extending-the-existing-user-model and on 本文 https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)