Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        5个月前关闭。
                                                                                            
                
        
我正在建立一个拥有很多公司的网站,每个公司都会有很多用户。如何按公司区分用户,以使每个公司的用户彼此隔离?



假设我有几个模型,例如UserCompanyMemo ...

class User(models.Model):
    name = models.CharField(max_length=64)
    company = models.ForeignKey(Company)

class Company(models.Model):
    name = models.CharField(max_length=100)

class Memo(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_time = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)


每个备忘录应由公司分隔,以使Company A的任何用户都看不到Company B的备忘录。我的网站将包含很多此类逻辑。如果我们在每个视图中应用过滤器,则该公司将应用于每个用户,例如:

User.object.filter(company_id='1')


有没有办法将此逻辑放在ModelModel Manager中,以便我们使用Fat Models and Skinny Views?还是因为用户的公司不在Memo模型的范围内而不能这样做?

最佳答案

您应该使用ForeignKey并在公司和用户之间创建一个Many-to-one relationships

为了过滤用户,您应该在查询中使用Company ForeignKey

我从事过许多Django项目,我认为这是您应该采用的方式。

关于python - 如何在Model Manager Django中为公司过滤Model实例? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58327229/

10-12 13:03