2017-11-15 4 views
2

Sagen wir dieses Modell haben:Render Fremdschlüssel in Vorlage als Ankreuzfelder statt Select in Django

class Event(models.Model): 
    name = models.CharField('Nome do evento', max_length=50) 
    code = models.CharField('Código de entrada', max_length=10) 
    artists_list = models.ForeignKey(ListGroup, on_delete=None, 
    related_name='lists_names', null=True) 

und diese Ansicht

class HomeView(LoginRequiredMixin, TemplateView): 
    template_name = 'home.html' 

    def get_context_data(self, **kwargs): 
     context = super(HomeView, self).get_context_data(**kwargs) 
     context['form'] = CreateEventForm(self.request.POST or None) 
     context['defaultTitle'] = 'Novo Evento' 
     context['formTitle'] = 'Criar' 
     return context 

    def post(self, request, *args, **kwargs): 
     context = self.get_context_data(**kwargs) 
     form = context['form'] 
     print(form) 
     if form.is_valid(): 
      form.save() 
     return self.render_to_response(context) 

und dieses Formular

class CreateEventForm(forms.ModelForm): 

    class Meta: 
     model = Event 
     fields = ('name', 'code', 'artists_list',) 

alles funktioniert Großartig, aber ich möchte in der Lage sein, mehrere Einträge auszuwählen, die mein Fremdschlüssel abrufen wird. Daher möchte ich jeden Eintrag als Kontrollkästchen anstatt als Auswahl markieren. Wie kann ich das erreichen? Ich habe bereits viel gesucht und nur über allgemeine Charfields gefunden, nichts über Foreing Key Here's how its rendering

Antwort

4

Ein Fremdschlüssel kann nicht auf mehrere Einträge zeigen. Wenn Sie das möchten, sollten Sie ein ManyToManyField verwenden.

+0

Richtig. Das werde ich überprüfen. Vielen Dank – lelukas