我的代码看起来像这样:
from django.db import models
from django.conf import settings
User = settings.AUTH_USER_MODEL
class Dish(models.Model):
name = models.CharField(max_length=200)
class Meal(models.Model):
name = models.CharField(max_length=200)
dishes = models.ManyToManyField(Dish)
多对多菜肴字段将产生一个名为“myapp_meal_dishes”的数据库表。正在创建包含id,meal_id和dish_id字段。
我想添加一个与自动生成的表连接的MealDishEater模型:
class MealDishEater(models.Model):
meal_dish = models.ForeignKey(MealDishes, on_delete=models.CASCADE)
eater = models.ForeignKey(User, on_delete=models.PROTECT)
ate_meal = models.BooleanField(default=False)
当然,这不起作用,因为没有定义MealDishes。有没有办法做到这一点,还是我必须创建自己的表?
答案 0 :(得分:2)
您可以使用ManyToManyField
属性访问through
中间模型。所以这应该有效:
class MealDishEater(models.Model):
meal_dish = models.ForeignKey(Meal.dishes.through, on_delete=models.CASCADE)
但就个人而言,我总是为through
创建明确的ManyToManyFields
模型,而不是允许这样的魔法。