Mam model z relacji ManyToMany, który chciałbym zaktualizować za pomocą widżetu CheckBoxSelectMultiple, podczas gdy wszystko inne używa domyślnej formy ogólnej, ale gdy ponownie zdefiniuję to pole formularza, jest ono jedyne wyświetlane w oknie UpdateView. Czy istnieje sposób użycia widgetu z jednym polem bez konieczności ponownego definiowania całego formularza?Jak używać widgetu niestandardowego z ogólnym UpdateView bez konieczności ponownego definiowania całego formularza?
Views.py:
from django.views.generic.edit import UpdateView
from kunden.models import Kunde, Unternehmenstyp
from kunden.forms import KundeEditForm
class KundeUpdate(UpdateView):
model = Kunde
form_class = KundeEditForm
template_name = 'kunden/kunde_update.html'
success_url = '/'
forms.py:
from django.forms.widgets import CheckboxSelectMultiple
from django.forms import ModelMultipleChoiceField,ModelForm
from kunden.models import Kunde, Unternehmenstyp
class KundeEditForm(ModelForm):
model = Kunde
unternehmenstyp = ModelMultipleChoiceField(widget=CheckboxSelectMultiple,required=True, queryset=Unternehmenstyp.objects.all())
wiem, ma to boleśnie proste rozwiązanie, więc dzięki za cierpliwość w góry każdego.
Gdy jestem w tym, czy ktoś może polecić jakieś książki django, które warto przeczytać? Przeszedłem przez samouczek bazowy, przekopałem dokumentację w razie potrzeby i przeczytałem Dwie łyżki Django: https://django.2scoops.org/, więc jeśli potrafisz wymyślić książkę dla kogoś na moim poziomie, byłoby to bardzo cenne. dzięki jeszcze raz
To było na pewno szybko. Wielkie dzięki. Próbowałem zaakceptować to jako odpowiedź, ale powiedziałem, że muszę poczekać 10 minut :) mimo wszystko, jeśli masz czas, możesz wskazać mi jakąś dokumentację na temat tego, co tu się dzieje? – skzryzg
Metainformacje na KundeEditForm dają możliwość ustawienia niestandardowego widgetu do dowolnego pola formularza. – aRkadeFR
Dla drugiej części robi to samo poprzez przekazanie argumentu pozycyjnego "widgets" do modelform_factory. – aRkadeFR