Т.к. M2M поле - это сахар в джанге, может быть неочевидно, что в БД она представляется двумя полями с уникальным индексом на оба поля. FK на одну модель и FK на другую модель. Добавочные поля в M2M указать нельзя, поэтому нужно сделать что-то вроде такого:
class Ingredient(models.Model):
name = models.CharField(u'Название ингр_е_диента', max_length=255)
class Pizza(models.Model):
name = models.CharField(u'Название пиццы', max_length=255)
ingredients = models.ManyToManyField(Ingredient, through='PizzaIngredient')
class PizzaIngredient(models.Model):
pizza = models.ForeignKey(Pizza)
ingredient = models.ForeignKey(Ingredient)
quantity = models.DecimalField(max_digits=9, decimal_places=2)
unit = models.CharField(max_length=30) # Единица измерения (граммы, ложки). Можно выделить в отдельную таблицу, если надо
class Meta:
unique_together = (('pizza', 'ingredient'),)