1

views.pyсборки флажок в Джанго

def what(request): 
     user = request.user 
     report = Report.objects.get(user=user.id) 
     reportnotesform=ReportNotes(instance=report) 
     reportform = ReportForm(instance=report) 
     typeList = Types.objects.filter(user=user, is_active=True,parent_type_id=None) 
     list = [] 
     for type in typeList: 
      if not type.parent_type_id: 
       list.append(type) 
       subtype = Types.objects.filter(parent_type_id=type.id, is_active=True) 
       for subtypes in subtype: 
         list.append(subtypes) 
     if request.method == 'POST': 
      ReportType.objects.filter(report=report).delete() 
      checked_ones = [unicode(x) for x in subtype if unicode(x) in request.POST.keys()] 
      reportnotesform=ReportNotes(request.POST,instance=report) 
      if reportnotesform.is_valid(): 
       report=reportnotesform.save(commit=False)  
       report.user=request.user 
       report.save() 
       for entry in checked_ones: 
         r = ReportType() 
         r.report = report 
         r.title = entry 
         r.save() 
      return redirect('/member/where/') 
     checked_ones = [x.title for x in ReportType.objects.filter(report=report)] 
     return render(request, 'incident/what.html', 
     { 
     'newreport_menu': True, 
     'typeList':list, 

     'checked_ones':checked_ones, 
    # 'typelist': typelist, 
     'ReportNotes':reportnotesform, 
     'ReportForm':reportform 
     }) 

models.py

class ReportType(models.Model): 
    report = models.ForeignKey(Report) 
    title = models.CharField('Incident Type', max_length=200) 

шаблон

{% for type in typeList%} 
    {% if type.parent_type_id == None %} 
    <h1>{{type.title}}</h1> 
{% else %} 
<p><input type="checkbox">{{type.title}}</input></p> 
{% endif %} 
{% endfor %} 

Я использую форму модели, чтобы отобразить флажок, динамически.

Это мой взгляд, где я беру значения из базы данных и отображения. Значения, отфильтрованные объектом-списком, должны отображать значения вместе с флажком. Для объектов типа не имеет значения. Любой способ сделать это в Джанго.

ответ

1

Это должно работать для вас:

<h1> {% for type in types %}{{type.title}}<br />{% endfor %}</h1>   
<form action="" method="post"> 
{% for field in typelist %} 
{% if field.title in checked_ones %} 
<label><input type="checkbox" checked="true" name="{{field}}">{{ field }}</label><br /> 
{% else %} 
<label><input type="checkbox" name="{{field}}">{{ field }}</label><br /> 
{%endif%} 
{% endfor %} 
</form> 


def what(request): 
    user = request.user 

    types = Types.objects.filter(user=user.id, parent_type_id=None).order_by('title') 
    typelist=Types.objects.filter(user=user.id,parent_type_id__isnull=False).order_by('title') 
    reporttypeForm = ReportTypeForm() 
    if request.method == 'POST': 
     ReportType.objects.filter(report=#your report).delete() 
     checked_ones = [unicode(x) for x in typelists if unicode(x) in request.POST.keys()] 
     for entry in checked_ones: 
      r = ReportType() 
      r.report = # the hardcoded report 
      r.title = entry 
      r.save() 
     ... 
     reporttypeForm = ReportTypeForm(request.POST)   
     if reporttypeForm.is_valid(): 
      reporttypeForm.save() 
    checked_ones = [x.title for x in ReportType.objects.filter(report=#your report)] 
    return render(request, 'incident/what.html', 
     { 
      'checked_ones':checked_ones, 
      'newreport_menu': True, 
      'types':types, 
      'typelist': typelist, 
      'reporttypeForm':ReportTypeForm 
    }) 

Удачи!

0

Не зная ничего о том, почему вы пытаетесь сделать это таким образом, похоже, что вы нарушаете свою проблему, пытаясь сделать его динамичным, когда вы можете просто использовать models.BooleanField(), который Django будет автоматически отображаться как флажок. Это было бы проще и сделать код более удобным для чтения.

+1

Похоже, что вы можете добавить поле в свою модель для этого значения и определить поле как 'models.BooleanField (blank = True, null = True)'. Таким образом, вы можете оставить его пустым, пока вы его не используете. – Zamphatta

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