Django中级模型用户

时间:2018-01-26 16:50:17

标签: django model

我想创建一个模型,其中用户拥有多家公司的一定数量的股份。看起来我应该使用Django中间模型关系,但我不确定如何将中间模型应用于内置的Django用户模型。

目前,公司与股东(用户)之间存在ManyToMany关系,如何为每个特定的公司 - 股东关系增加股数?

class Company(models.Model):
    name = models.CharField(max_length=200)
    shareholder = models.ManyToManyField(User, blank=True)

2 个答案:

答案 0 :(得分:0)

您可以使用带有直通属性的多对多字段

[XmlRoot("items")]
public class StreamingEvents
{
    [XmlElement("item")]
    public List<Event> Events { get; set; }
}

答案 1 :(得分:0)

我就是这样做的:

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()

我不会直接使用用户模型,而是创建一个与用户具有一对一关系的股东模型。然后,我将与股东中间模型建立股东和公司之间的多对多关系。

original docsthis article

更详细地介绍了使用与Profile模型一对一关系扩展用户模型的技术