2010-01-10 2 views
0

Я пишу веб-приложение для управления «игрой». Вот модели:Обработка «инвентаризации» (сложные ассоциации) с django + appengine

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 с, но они не могут справиться с такими вещами. Моя идея состоит в том, чтобы отобразить полный список Item, каждый элемент с соответствующим количеством формы, оборудованный. Что-то вроде:

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

Но как отправить дополнительную информацию в формы?

P.S. Извините, что вопрос немой, а не общий, но я не мог найти ключевые слова, чтобы его обобщить.

+0

Вы спрашиваете, как отобразить это в форме html? похоже, ваша модель делает то, что вы хотите, поэтому я предполагаю, что это не ваш вопрос. –

+0

да, моя проблема в html "form" stuff – pygabriel

ответ

1

Не уверен, что, если я вас правильно понимаю, но если вы хотите, чтобы показать инвентаре персонажа в форме и поместите форму символа в одной и той же странице, вы должны проверить встроенные FormSets the doc

Использования встроенного FormSets вы можете сделать что-то вроде этого:

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

из этой формы вы можете управлять вашими деталями, например, если у вас есть ManyToMany отношение к вашей модели Items вы можете обработать их с Ajax-отфильтрованных полей link

HTH

Смежные вопросы