Home > Back-end >  Django FormModel map fields to HTML Form
Django FormModel map fields to HTML Form

Time:11-12

I have forms created on my Django site, they have been manually created using HTML and then using JavaScript to POST the form content to the model.

Now I am working on updates to the model. I've taken the existing HTML form for the page, but I can't work out how I map the view fields to the HTML form?

Views.py

def update_event(request,event_id):
    event = Event.objects.get(pk=event_id)
    form = addEventForm(request.POST or None, instance=event)
    return render(request, 'pages/update_event.html', {'event': event, form : form})

models.py

class Event(models.Model):

    project = models.ForeignKey(Game, to_field='project_name', on_delete=models.CASCADE)
    event_name = models.CharField(max_length=20)
    event_date = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return str(self.event_name)

HTML

<div class="col-md-6">
    <div class="mb-3">
        <label class="form-label" for="event-name-label">Event Name</label>
        <input type="text" class="form-control" id="event-name" value="" required>
        <div class="valid-feedback">
            Looks good!
        </div>
        <div class="invalid-feedback">
            Please fill Event name.
        </div>
    </div>
</div>

I've tried using form.event_name but this doesn't work.

Any help would be great

Thanks

CodePudding user response:

You have a syntax error in the last line of your view and you should use "form": form

And in your HTML code, you should use two brackets to using django HTML syntax: {{ form.instance.event_name }}

the last thing is instance that you can see in the above phrase.

  • Related