Django中级模型用户 [英] Django Intermediate Model User
问题描述
我想创建一个模型,其中用户拥有多家公司的一定数量的股份.似乎我应该使用Django中间模型关系,但是我不确定如何将中间模型应用于内置的Django用户模型.
I'd like to create a model in which a user owns a certain number of shares in multiple companies. It seems like I should use the Django intermediate model relationship, but I'm not sure how to apply an intermediate model to the built-in Django User Model.
现在,公司与股东(用户)之间存在ManyToMany关系,如何在每个特定的公司-股东关系中增加股份数量?
Right now, companies have a ManyToMany relationship with shareholders (users), how do I add number of shares to each specific company-shareholder relationship?
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()
我将创建一个与用户具有一对一关系的股东模型,而不是直接使用用户模型.然后,我将使用持股中间模型在股东与公司之间建立多对多关系.
Instead of using the User model directly, I would create a Shareholder model with a one-to-one relationship with the User. Then I would create the many-to-many relationship between the Shareholders and Company with a Shareholding intermediate model.
这篇关于Django中级模型用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!