我的代码看起来像这样:
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。有没有办法做到这一点,还是我必须通过表格创建自己的表格?
最佳答案
您可以使用 through
属性访问 ManyToManyField
中间模型。所以这应该有效:
class MealDishEater(models.Model):
meal_dish = models.ForeignKey(Meal.dishes.through, on_delete=models.CASCADE)
不过,就我个人而言,我总是为 ManyToManyFields
创建明确的 through
模型,而不是允许这样的魔术。
关于mysql - Django:你能创建一个与自动生成的直通表的关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590952/