Возможно, вы захотите взглянуть на models.ManyToManyField и использовать хотя-отношения. https://docs.djangoproject.com/en/3.0/topics/db/examples/many_to_many/ https://docs.djangoproject.com/en/3.0/ref/models/fields/#django .db.models.ManyToManyField.through
class Fruit(models.Model):
name = models.CharField(max_length=30)
class Inventory(models.Model):
player = models.CharField(max_length=30)
fruits = models.ManyToManyField(
Fruit,
through='FruitContent'
)
class FruitContent(models.Model):
fruit = models.ForeignKey(Fruit, models.CASCADE)
inventory = models.ForeignKey(Inventory, models.CASCADE)
count = models.PositiveIntegerField()
# Protect your data structure
class Meta:
constraints = [
UniqueConstraint(fields=['fruit', 'inventory'], name='unique_ownership')
]
Это с сохранением модели инвентаризации, но это действительно немного неловко Делать это. Я бы предпочел что-то вроде этого:
class Fruit(models.Model):
name = models.CharField(max_length=30)
class Player(models.Model):
name = models.CharField(max_length=30)
inventory = models.ManyToManyField(
Fruit,
through='PlayerFruits'
)
class PlayerFruits(models.Model):
fruit = models.ForeignKey(Fruit, models.CASCADE)
player = models.ForeignKey(Player, models.CASCADE)
count = models.PositiveIntegerField()
# Protect your data structure
class Meta:
constraints = [
UniqueConstraint(fields=['fruit', 'player'], name='unique_ownership')