python类inlineformset_factory()的实例源码

inline.py 文件源码 项目:muxueonline 作者: 124608760 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def get_formset(self, **kwargs):
        """Returns a BaseInlineFormSet class for use in admin add/change views."""
        if self.exclude is None:
            exclude = []
        else:
            exclude = list(self.exclude)
        exclude.extend(self.get_readonly_fields())
        if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:
            # Take the custom ModelForm's Meta.exclude into account only if the
            # InlineModelAdmin doesn't define its own.
            exclude.extend(self.form._meta.exclude)
        # if exclude is an empty list we use None, since that's the actual
        # default
        exclude = exclude or None
        can_delete = self.can_delete and self.has_delete_permission()
        defaults = {
            "form": self.form,
            "formset": self.formset,
            "fk_name": self.fk_name,
            'fields': forms.ALL_FIELDS,
            "exclude": exclude,
            "formfield_callback": self.formfield_for_dbfield,
            "extra": self.extra,
            "max_num": self.max_num,
            "can_delete": can_delete,
        }
        defaults.update(kwargs)

        return inlineformset_factory(self.parent_model, self.model, **defaults)
views.py 文件源码 项目:numbas-lti-provider 作者: numbas 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def projectformset(self,*args,**kwargs):
        if 'initial' in kwargs:
            extra = len(kwargs['initial'])
        else:
            extra = 0
        factory = inlineformset_factory(
            EditorLink,
            EditorLinkProject,
            form=forms.EditorLinkProjectForm,
            can_delete=False,
            extra=extra
        )
        return factory(*args,**kwargs)
views.py 文件源码 项目:nrp 作者: django-rea 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def agent_associations(request, agent_id):
    agent = get_object_or_404(EconomicAgent, pk=agent_id)
    HasAssociatesFormSet = inlineformset_factory(
        EconomicAgent,
        AgentAssociation,
        fk_name = "has_associate",
        form=HasAssociateForm,
        extra=3,
        )
    has_associates_formset = HasAssociatesFormSet(
        instance=agent,
        queryset=agent.all_has_associates(),
        prefix = "has",
        data=request.POST or None)
    IsAssociatesFormSet = inlineformset_factory(
        EconomicAgent,
        AgentAssociation,
        fk_name = "is_associate",
        form=IsAssociateForm,
        extra=3,
        )
    is_associates_formset = IsAssociatesFormSet(
        instance=agent,
        queryset=agent.all_is_associates(),
        prefix = "is",
        data=request.POST or None)
    if request.method == "POST":
        #import pdb; pdb.set_trace()
        keep_going = request.POST.get("keep-going")
        just_save = request.POST.get("save")
        for form in has_associates_formset:
            if form.is_valid():
                deleteme = form.cleaned_data['DELETE']
                if deleteme:
                    association = form.save(commit=False)
                    if association.id:
                        association.delete()
                else:
                    form.save()
        for form in is_associates_formset:
            if form.is_valid():
                deleteme = form.cleaned_data['DELETE']
                if deleteme:
                    association = form.save(commit=False)
                    if association.id:
                        association.delete()
                else:
                    form.save()
        if just_save:
            return HttpResponseRedirect('/%s/%s/'
                % ('accounting/agent', agent.id))
        elif keep_going:
            return HttpResponseRedirect('/%s/%s/'
                % ('accounting/agent-associations', agent.id))
    return render_to_response("valueaccounting/agent_associations.html", {
        "agent": agent,
        "has_associates_formset": has_associates_formset,
        "is_associates_formset": is_associates_formset,
        "help": get_help("associations"),
    }, context_instance=RequestContext(request))
views.py 文件源码 项目:open-semantic-search-apps 作者: opensemanticsearch 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def update_concept(request, pk):

    concept = Concept.objects.get(pk=pk)

    AlternatesFormSet = inlineformset_factory( Concept, Alternate, can_delete=True, exclude=() )
    MispellingsFormSet = inlineformset_factory( Concept, Hidden, can_delete=True, exclude=() )
    TagsFormSet = inlineformset_factory( Concept, ConceptTag, can_delete=True, exclude=() )
    BroaderFormSet = inlineformset_factory( Concept, Broader, fk_name='concept', can_delete=True, exclude=() )
    NarrowerFormSet = inlineformset_factory( Concept, Narrower, fk_name='concept', can_delete=True, exclude=() )
    RelatedFormSet = inlineformset_factory( Concept, Related, fk_name='concept', can_delete=True, exclude=() )

    if request.POST:

        concept_form = ConceptForm(request.POST, request.FILES, instance=concept, prefix="concept")

        alternates_formset = AlternatesFormSet(request.POST, request.FILES, instance=concept, prefix="alternates")
        misspellings_formset = MispellingsFormSet(request.POST, request.FILES, instance=concept, prefix="misspellings")
        tags_formset = TagsFormSet(request.POST, request.FILES, instance=concept, prefix="tags")

        broader_formset = BroaderFormSet(request.POST, request.FILES, instance=concept, prefix="broader")
        narrower_formset = NarrowerFormSet(request.POST, request.FILES, instance=concept, prefix="narrower")
        related_formset = RelatedFormSet(request.POST, request.FILES, instance=concept, prefix="related")


        if concept_form.is_valid() and alternates_formset.is_valid() and tags_formset.is_valid() and broader_formset.is_valid() and narrower_formset.is_valid() and related_formset.is_valid():
            concept_form.save()
            alternates_formset.save()
            misspellings_formset.save()
            tags_formset.save()
            broader_formset.save()
            narrower_formset.save()
            related_formset.save()

            messages.add_message( request, messages.INFO, "Saved concept \"{}\"".format(concept.prefLabel) )

            # tag all docs containing concept or one of its aliases
            tag_concept_and_message_stats(request=request, concept=concept)

            return HttpResponseRedirect( reverse('thesaurus:detail', args=[pk])) # Redirect after POST

            pass
    else:
        concept_form = ConceptForm(instance=concept, prefix="concept")

        alternates_formset = AlternatesFormSet(instance=concept, prefix="alternates")
        misspellings_formset = MispellingsFormSet(instance=concept, prefix="misspellings")
        tags_formset = TagsFormSet(instance=concept, prefix="tags")

        broader_formset = BroaderFormSet(instance=concept, prefix="broader")
        narrower_formset = NarrowerFormSet(instance=concept, prefix="narrower")
        related_formset = RelatedFormSet(instance=concept, prefix="related")

    return render(request, 'thesaurus/concept_form.html',
            {'form': concept_form, 'concept': concept, 'alternates_formset':alternates_formset, 'misspellings_formset':misspellings_formset, 'tags_formset':tags_formset, 'broader_formset':broader_formset, 'narrower_formset':narrower_formset, 'related_formset':related_formset } )


问题


面经


文章

微信
公众号

扫码关注公众号