【问题标题】:Is there any way to store repeating foreign keys in M2M field in Django?有没有办法在 Django 的 M2M 字段中存储重复的外键?
【发布时间】:2021-08-12 08:21:14
【问题描述】:

我有:

class Item(models.Model):
    item_id = models.IntegerField(default=1, unique=True, primary_key=True)
    name = models.CharField(default="None", max_length=256)

class Backpack(models.Model):
    items = models.ManyToManyField(Item)

背包应存放 6 件或更少的物品。但我不能添加两个相同的。 如果我的背包模型中没有 6 个不同的外键,我能以某种方式解决它吗?

【问题讨论】:

  • 您可以通过模型使用自定义并存储有关数量的信息docs
  • 订单对我来说也很重要
  • 所以添加另一个具有订单重量的字段。

标签: python mysql django django-models


【解决方案1】:

您可以在关系(通过)模型中存储多少给定类型的项目。

class BackpackItems(models.Model):
    backpack = models.ForeignKey(Backpack, on_delete = models.CASCADE)
    item = models.ForeignKey(Item, on_delete = models.CASCADE)
    quantity = models.PositiveIntegerField(default = 1)

class Item(models.Model):
    item_id = models.IntegerField(default=1, unique=True, primary_key=True)
    name = models.CharField(default="None", max_length=256)

class Backpack(models.Model):
    items = models.ManyToManyField(Item, through = BackpakItems)

【讨论】:

  • 顺序也很重要
  • 第一。修改您的问题是否重要,只需指出即可。其次,此方法允许您输入其他变量,例如订单、重量或您需要的东西。如果您只需要排序,可以使用Sorted m2m
猜你喜欢
  • 1970-01-01
  • 2010-10-06
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 2023-04-11
  • 1970-01-01
相关资源
最近更新 更多