简体   繁体   中英

Is there any way to store repeating foreign keys in M2M field in Django?

I've got:

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)

The backpack should store 6 or fewer items. But I can't add to it two the same ones. Can I solve it somehow without 6 different foreign keys in my Backpack model?

You can store how many items of given type you have in relation(through) model.

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM