gpt4 book ai didi

mysql - Django:你能创建一个与自动生成的直通表的关系吗?

转载 作者:行者123 更新时间:2023-11-29 05:56:53 24 4
gpt4 key购买 nike

我的代码看起来像这样:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com