Witam,
Potrzebuję dynamicznie pobrać z bazy danych informację o statusie klikniętego elementu,
po czym wczytać go do pola <input> formularza. Niestety Django nie pozwala używać QuerySet i jej metod np: '.get()' w templates. <Dlaczego? >
Nie wiem jak podejść do tematu by uzyskać tylko ten jeden element.
Django zwraca poniższy błąd:
Could not parse the remainder: '(id=id).status' from 'events.objects.get(id=id).status'
eventClick: function (info) {
var id = info.event.id;
var start = moment(info.event.start).format("Y-MM-DD HH:mm:ss");
var end = moment(info.event.end).format("Y-MM-DD HH:mm:ss");
modal.style.display = "block";
$('#form_status').prop('value', {{ events.objects.get(id=id).status }} );
$('#form_start').prop('value', start );
$('#form_end').prop('value', end );
Poniżej dodaję wycinki kodu widoku oraz modelu:
def workhours_view(request):
all_events = GodzinyPracy.objects.all()
context = {
"events": all_events,
...
}
return render(request, 'godziny_pracy.html', context)
class GodzinyPracy(models.Model):
class Meta:
verbose_name = 'Godzina pracy'
verbose_name_plural = 'Godziny pracy'
id = models.AutoField(primary_key=True)
pracownik = models.ForeignKey(User, verbose_name="Pracownik", on_delete=models.CASCADE, null=True, blank=True)
status = models.ForeignKey(StatusPracy, verbose_name="Status pracy", on_delete=models.CASCADE, null=True, blank=True)
...
def __str__(self):
return str(self.start) + " " + str(self.pracownik) + " " + str(self.status)
W pętli for nie było by problemu i wyglądało by to tak:
{% for event in events %}
{
status: "{{ event.status }}",
...
},
{% endfor %}
Poszperałem trochę w dokumentacji Django i nie znalazłem odpowiedzi na moje pytanie :/