2016-04-27 26 views
0

2つのオブジェクト、CompanyとAccountが異なるパッケージにあります。 従業員を介して多対多の関係を持ち、追加のフィールドis_adminを持っています。djangoの双方向多対多リレーションシップで両方のモデルからコレクションを取得する方法

会社で私はリレーションを定義し、オンラインで読むと、私はアカウント内のリレーションを修正する必要がないように思われます(これは循環インポートになります)。

CompanySerializerからすべてのアカウントを取得することは問題ありませんが、 ですが、アカウントに登録されているすべての企業も取得できる必要があります。

これが私の考えです:

勘定モデル:

class Account(AbstractBaseUser): 
current_jobs = models.ManyToManyField(
    Company, through='Employee') // I need to define current_jobs in some way 
           //,but this results in circular import 

会社モデル:

class Company(models.Model): 
employees = models.ManyToManyField(
    settings.AUTH_USER_MODEL, through='Employee') 

従業モデル:

class Employee(models.Model): 

class Meta: 
    unique_together = ('user', 'company') 


user = models.ForeignKey(settings.AUTH_USER_MODEL, 
         on_delete=models.CASCADE) 
company = models.ForeignKey(Company, on_delete=models.CASCADE) 
is_admin = models.BooleanField() 

問題はどのように私意志、です今hoを定義するwの2つのシリアライザで各リストを取得します。 Companyシリアライザとアカウントシリアライザ...

私がcurrent_jobsを定義しないと、current_jobsが定義されていないというエラーが表示されます。

答えて

1

アカウントでcurrent_jobsを定義する必要があると思われる理由がわかりません。それはreverse relationshipを介してcompany_setとして自動的に提供されます。 current_jobsが必要な場合は、related_name属性を設定できます。

+0

Hehe、私は非常にdjangoの新人です、そして、これは変数がどのように命名されたか分かりませんでした。私は愚かな質問をして申し訳ありません!これを見つけたはずです:)しかしそれは私の問題を解決したので、ありがとう! – Patidati

関連する問題