5

私は 2 つのアプリを持っていますが、これらのアプリはそれぞれ別個のものであり、互いに通信する特別な理由はありません。これは、どちらのアプリにもどちらの名前もインポートしたくないことを意味します。すべての作業はグルー アプリ内で行う必要があります。

次のような ManyToManyField を介して特定のモデルに参加するグルー アプリを作成したいと思います。

アプリのお客様では、

class Customer(models.Model):
    ...

アプリのピザでは、

class Pizza(models.Model):
    ...

次に、次のようなピザ販売アプリを書きたいと思います。

class PizzaSold(models.Model):
    customer = models.ForeignKey(related_name='pizzas')
    pizza = models.ForeignKey(related_name='customers')

    objects = ManyRelatedManager()

顧客からのピザに直接アクセスできるように

 pizza = Pizza.objects.all()[0]
 for customer in pizza.customers:
     #Do something cool

この新しいアプリ内のピザの顧客。

どうやってやるの ?

4

1 に答える 1

4

ManyToManyFieldを使用して Customer モデル内で販売されるピザをモデル化したらどうなるでしょうか?

class Customer(models.Model):
   pizzas_bought = models.ManyToManyField(Pizza)

また、顧客 -> ピザのリレーションに追加データを追加する場合は、パラメーターを介してマッピング クラスを指定します。

class Customer(models.Model):
   pizzas_bought = models.ManyToManyField(Pizza, through=PizzaSold)

class PizzaSold(models.Model):
   customer = models.ForeignKey(Customer)
   pizza = models.ForeignKey(Pizza)

同様に、 usingもrelated_name問題なく動作するはずManyToManyFieldsです。例えば:

class Customer(models.Model):
   pizzas_bought = models.ManyToManyField(related_name='pizzas')
于 2011-05-25T09:43:36.383 に答える