django如何从同一个模型中获得多个外键

Tot*_*oum 2 django model foreign-keys multiple-models

这是我的模型:

class Item(models.Model):
    name = models.CharField(max_length=30)
    ...
    choices = (
        ('weapon', 'weapon'),
        ('shield', 'shield'),
    )
    typeOf = models.CharField(max_length=15, choices=choices)



class Character(models.Model):
    name = models.CharField(max_length=30, unique=True)
    ...
    weapon = models.ForeignKey(Inventory) // **THIS IS WHAT I WANT TO DE BUT DOES'NT WORK**
    shield = models.ForeignKey(Inventory) // **THIS IS WHAT I WANT TO DE BUT DOES'NT WORK**
    inventory = models.ManyToManyField(Item, through='Inventory')




class Inventory(models.Model):
    character = models.ForeignKey('Character')
    item = models.ForeignKey('Item')
Run Code Online (Sandbox Code Playgroud)

我知道如何将物品添加到库存但现在我想装备它们.我该怎么做外键?我希望能够从我的库存中装备武器

Roh*_*han 9

您需要添加related_name到字段定义中

...
weapon = models.ForeignKey(Inventory, related_name='weapons') 
shield = models.ForeignKey(Inventory, related_name='shields')
...
Run Code Online (Sandbox Code Playgroud)

如果没有related_name,django会尝试character_setInventory模型中创建属性,但是第二次会失败.