Я пытаюсь отобразить форму теннисного соревнования (место, время/дата) и каждого из его участников (имя, статус). Мне рекомендовали использовать встроенный набор форм, который, как я предполагаю, позволит редактировать все эти поля с помощью одной кнопки отправки. Что я получаю: все поля участников являются редактируемыми полями, а поля событий — нет (они просто отображаются):
Прав ли я, предполагая, что набор встроенных форм должен позволять такой подход?
Модели:
class Event(models.Model):
date_time = models.DateTimeField(default=datetime.now(), auto_now=False, auto_now_add=False, null=False, blank=False) #
location = models.CharField(max_length=50, null=False, blank=False, help_text="Where the event will happen, e.g. location and court")
roster = models.ForeignKey(Roster, related_name='events', on_delete=models.CASCADE, default=None, null=True, help_text="The event's roster")
comment = models.CharField(max_length=400, null=True, blank=True, help_text="A comment about an event, e.g. time / court constraints etc.")
class Participant(models.Model):
member_name = models.CharField(max_length=50, null=False, blank=False)
event = models.ForeignKey(Event, on_delete=models.CASCADE, null=False, related_name="participants")
status = models.CharField(max_length=50, choices=StatusChoices, default="Unknown")
comment = models.CharField(max_length=400, blank=True, null=True)
Просмотр:
def event_edit(request, event_id):
event = get_object_or_404(Event, pk=event_id)
roster = event.roster
ParticipantInlineFormSet = inlineformset_factory(Event, Participant, fields=["id","member_name", "status","comment"], extra=0)
if request.method == 'POST':
formset = ParticipantInlineFormSet(request.POST, request.FILES, instance=event)
if formset.is_valid():
formset.save()
return render(request,'event_list.html',{"roster": roster, 'events': roster.events.all()})
else:
formset = ParticipantInlineFormSet(instance=event)
print(formset)
return render(request, "event_edit_2.html", {"formset": formset, "event": event})
Шаблон:
{% csrf_token %}
{{ formset.management_form }}
{{ form.as_p }}
{{formset.instance.location}}
{{formset.instance.date_time}}
{{formset.instance.comment}}
{% for form in formset %}
{{form.member_name}}
{{form.status}}
{{form.comment}}
{% endfor %}
Save
Подробнее здесь: https://stackoverflow.com/questions/798 ... model-data
Позволяет ли встроенный набор форм Django редактировать и отправлять связанные данные модели? ⇐ Python
Программы на Python
1767011335
Anonymous
Я пытаюсь отобразить форму теннисного соревнования (место, время/дата) и каждого из его участников (имя, статус). Мне рекомендовали использовать встроенный набор форм, который, как я предполагаю, позволит редактировать все эти поля с помощью одной кнопки отправки. Что я получаю: все поля участников являются редактируемыми полями, а поля событий — нет (они просто отображаются):
Прав ли я, предполагая, что набор встроенных форм должен позволять такой подход?
Модели:
class Event(models.Model):
date_time = models.DateTimeField(default=datetime.now(), auto_now=False, auto_now_add=False, null=False, blank=False) #
location = models.CharField(max_length=50, null=False, blank=False, help_text="Where the event will happen, e.g. location and court")
roster = models.ForeignKey(Roster, related_name='events', on_delete=models.CASCADE, default=None, null=True, help_text="The event's roster")
comment = models.CharField(max_length=400, null=True, blank=True, help_text="A comment about an event, e.g. time / court constraints etc.")
class Participant(models.Model):
member_name = models.CharField(max_length=50, null=False, blank=False)
event = models.ForeignKey(Event, on_delete=models.CASCADE, null=False, related_name="participants")
status = models.CharField(max_length=50, choices=StatusChoices, default="Unknown")
comment = models.CharField(max_length=400, blank=True, null=True)
Просмотр:
def event_edit(request, event_id):
event = get_object_or_404(Event, pk=event_id)
roster = event.roster
ParticipantInlineFormSet = inlineformset_factory(Event, Participant, fields=["id","member_name", "status","comment"], extra=0)
if request.method == 'POST':
formset = ParticipantInlineFormSet(request.POST, request.FILES, instance=event)
if formset.is_valid():
formset.save()
return render(request,'event_list.html',{"roster": roster, 'events': roster.events.all()})
else:
formset = ParticipantInlineFormSet(instance=event)
print(formset)
return render(request, "event_edit_2.html", {"formset": formset, "event": event})
Шаблон:
{% csrf_token %}
{{ formset.management_form }}
{{ form.as_p }}
{{formset.instance.location}}
{{formset.instance.date_time}}
{{formset.instance.comment}}
{% for form in formset %}
{{form.member_name}}
{{form.status}}
{{form.comment}}
{% endfor %}
Save
Подробнее здесь: [url]https://stackoverflow.com/questions/79856572/does-django-inlineformset-allow-for-editing-submitting-related-model-data[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия