Is there something equivalent to has_one :through
in Django?
I have User
, Company
, and CompanyMember
models. CompanyMember
has foreign keys to User
and Company
. A User
can belong to a Company
through the CompanyMember
model. Assume User
is unique in CompanyMember
In Rails, this relationship would look something like
class User < ActiveRecord::Base
has_one :company_member
has_one :company, :through => :company_member
end
class Company < ActiveRecord::Base
has_many :company_members
end
class CompanyMember < ActiveRecord::Base
belongs_to :company
belongs_to :user
end
And I would be able to use user.company
to get the user's company.
In Django, I have my models like this
from django.contrib.auth.models import User
from django.db import models
class Company(models.Model):
name = models.CharField()
class CompanyMember(models.Model):
company = models.ForeignKey(Company)
user = models.ForeignKey(User, unique=True)
is_company_admin = models.BooleanField(default=False)
Is it possible to get user.company
to work like in Rails? I also like to be able to use it in queryset filters, like user__company=company
.