2017-03-23 11 views
5

Formda, oraya girmek istemediğim formun en üstüne yeni bir kayıt ekleme bölümü ekleyen bir form widget'ı oluşturdum. Birisi bunu nasıl devre dışı bırakabilirim? Sadece eklenti formundaki değişkenleri görüntülemek istiyorum.Django - Kaldır yeni pencere teçhizatından eklendi Widget>

yüklenir forms.py

class TemplateVariablesWidget(forms.Widget): 
    template_name = 'sites/config_variables.html' 

    def render(self, name, value, attrs=None): 
     sc_vars = ConfigVariables.objects.filter(type='Showroom') 
     wc_vars = ConfigVariables.objects.filter(type='Major Site') 
     context = { 
      'SConfigVariables' : sc_vars, 
      'WConfigVariables' : wc_vars, 
     } 
     return mark_safe(render_to_string(self.template_name, context)) 


class VariableForm(forms.ModelForm): 
    variables = forms.CharField(widget=TemplateVariablesWidget, required=False) 

    class Meta: 
     model = ConfigVariables 
     fields = "__all__" 

admin.py

class ConfigTemplateAdmin(admin.ModelAdmin): 
    list_display = ('device_name', 'date_modified') 
    def change_view(self, request, object_id, form_url='', extra_context=None): 
     extra_context = extra_context or {} 
     #extra_context['include_template'] = '/path/to/template.html' 
     extra_context['include_form'] = VariableForm 
     return super(ConfigTemplateAdmin, self).change_view(
      request, object_id, form_url, extra_context=extra_context, 
     ) 

change_view.html

{% block extra_content %} 
    {% if include_template %} 
     {% include include_template %} 
    {% endif %} 
    {% if include_form %} 
    <form method="POST" class="post-form"> 
     {% csrf_token %} 
     {{ include_form.as_p }} 
    </form> 
    {% endif %} 
{% endblock %} 

sayfa: sample of issue

+1

yılında ancak formu (' VariableForm')

def change_view(self, request, object_id, form_url='', extra_context=None): from sites.models import ConfigVariables config_variables = ConfigVariables.objects.all() extra_context = extra_context or {} extra_context['include_data'] = config_variables extra_context['include_template'] = 'admin/config_variables.html' #extra_context['include_form'] = VariableForm return super(ConfigTemplateAdmin, self).change_view( request, object_id, form_url, extra_context=extra_context, ) 

: aşağıda başına ben bir veri içerir seçeneği eklendi ve şablona yoluyla gönderilen "__all __" ') çok açık bir şekilde {{form.as_p}}' ile modelinizin tüm alanları için giriş alanları gösterecektir. – dirkgroten

+0

Doğru bir şekilde anlıyorsam, verileri bir tabloda görüntülemek ve ayrıca tabloda görüntülenen verilerin yeni bir girişini ekleyebilecekleri bir gizli (?) Formuna sahip olmak istersiniz. Bu doğru mu? –

cevap

0

. (`Alanlar = tüm alanları kapsamaktadır sonra şablonun

{% for d in include_data %} 
2

Şablonunuzdaki niyetlerinizi anladım, şablonunuzu veya formunu dahil etmek istiyorsanız formu ekleyin. Bu durumda:

{% if include_template %} 
    {% include include_template %} 
{% elif include_form %} 
    <form method="POST" class="post-form"> 
     {% csrf_token %} 
     {{ include_form.as_p }} 
    </form> 
{% endif %} 

başka olasılık, kendi ConfigTemplateAdmin sınıfında extra_context['include_form'] = VariableForm istemiyorum ve Formunuzla yeni Değişkenler eklemek için (geçerli görünümünde veya yöntemi) farklı bir görünüm yaratmak olabilir ! Bu sorunu çözmek için yönetilen

+0

Ben şimdi ne istediğimi biliyorum, sadece benim dev env ile sorun yaşıyorum bu yüzden test edemezsiniz ... – AlexW

+0

Dostum bilmek güzel, sorununuzu yakında çözebilirsiniz umuyoruz! –

İlgili konular