Orderインスタンスが作成されたときに電子メールを送信したい(唯一の)。電子メールテンプレートでは、m2m関係にアクセスする必要があります。不幸にも、m2mの関係はまだ入力されておらず、itemmembership_set.all()メソッドは空のリストを返します。ここで新しく作成されたインスタンスの保存メソッドでm2m関係にアクセス
は私のコードです:コメントの
class Item(models.Model):
...
class Order(models.Model):
...
items = models.ManyToManyField(Item, through='ItemMembership')
def save(self, *args, **kwargs):
pk = self.pk
super(Order, self).save(*args, **kwargs)
# If the instance is beeing created, sends an email with the order
# details.
if not pk:
self.send_details_email()
def send_details_email(self):
assert len(self.itemmembership_set.all()) != 0
class ItemMembership(models.Model):
order = models.ForeignKey(Order)
item = models.ForeignKey(Item)
quantity = models.PositiveSmallIntegerField(default=1)
いいえ、アイテムが保存されるまで多対多の関係が文字通り存在しないためです。あなたはどのように 'items'を投入していますか? –
今私はDjango管理者を使用しています。私は後でフロントエンドでフォームを作るつもりです。 – user1415785
私はあなたが探しているdjango SIGNALSだと思います。 これを参照してください - > https://docs.djangoproject.com/en/1.10/topics/signals/ –