Django ModelFormSet exclude (or filter) existing items -
i'm not sure understand how modelformset_factory
library works. want present user dynamic number of forms add new items database.
my models :
#models.py class question(models.model): user = models.foreignkey(user) text = models.charfield(max_length=100) class answer(models.model): question = models.foreignkey(question) text = models.charfield(max_length=100)
so user can define questions , many answers (choices) question.
so in view, want how many answers want add, , create dynamic formset, :
def q_answers(request, qid, howmanyanswersmore): answermodelformset = modelformset_factory(answer, fields=('question','text'), = howmanymore) formset = answermodelformset()
the problem is, form set contains answers in database (so answer#1 of question#1, a2 of q1, a1 of q2, a2 of q2, etc.)
however, want display answers of question stated in url qid
parameter. how filter answer items related questions?
also, can exclude existing items , let user add new questions?
thanks help!
either can add queryset parameter filter answer show:
def q_answers(request, qid, howmanyanswersmore): answermodelformset = modelformset_factory(answer, fields=('question','text'), = howmanymore) formset = answermodelformset(queryset=transaction.objects.filter(quistion=qid))
or can extend basemodelformset class , override queryset
property:
class baseanswerformset(basemodelformset): def __init__(self, *args, **kwargs): super(baseanswerformset, self).__init__(*args, **kwargs) #create filtering here whatever suits needs self.queryset = answer.objects.filter(question=qid) def q_answers(request, qid, howmanyanswersmore): formset = modelformset_factory(answer, formset=basetransactionformset,form=answerdateform, extra=0, can_delete=false)
Comments
Post a Comment