Django 中级模型用户

2024-05-04

我想创建一个模型,其中用户拥有多家公司一定数量的股份。看来我应该使用 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(使用前将#替换为@)

Django 中级模型用户 的相关文章

随机推荐