代码之家  ›  专栏  ›  技术社区  ›  pygabriel

处理与Django+Appengine的“库存”(复杂关联)

  •  0
  • pygabriel  · 技术社区  · 15 年前

    我正在编写一个Web应用程序来管理一个“游戏”。 模型如下:

    class Character(db.Model):
        # Bio
        name = db.StringProperty()
        player = db.StringProperty()
        level = db.IntegerProperty()
    
    class Item(db.Model):
        name = db.StringProperty()
        description = db.StringProperty()
        value = db.StringProperty()
    
    class Inventory(db.Model):
        character = db.ReferenceProperty(Character,required=True,collection_name="inventory")
        item = db.ReferenceProperty(Item,required=True,collection_name="inventory")
        quantity = db.IntegerProperty()
    equipped = db.BooleanProperty()
    

    我有一个 Item 数据库,当我添加一个字符时,我想管理它 Inventory . 我试过了 ModelForm 但是他们不能处理这类事情。我的想法是展示 项目 列表,每个项目都有一个关联的表单数量,装备。类似:

    Sword :
      quantity ___
      equipped _
    Armor :
      quantity ___
      equipped _
    

    但是,如何以表格形式发送附加信息?

    很抱歉,这个问题是愚蠢的,不是一般性的,但我找不到关键词来概括它。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Thomas Kremmel    15 年前

    不确定我是否正确理解您,但如果您希望以窗体显示字符的清单并将字符的窗体放在同一页上,则应签出内联窗体集。 the doc

    使用内联表单集,可以执行以下操作:

    character= get_object_or_404(Character, pk=character_id)
    InventoryInlineFormSet = inlineformset_factory(Character, Inventory, max_num=1)
    classificationformset = ClassificationInlineFormSet(instance=character)
    

    从这个表单中,您可以管理您的项目,例如,如果您与项目模型有许多关系,您可以使用Ajax过滤字段来处理它们。 link

    高温高压

        2
  •  0
  •   Brandon Henry    15 年前