Позволяет ли встроенный набор форм Django редактировать и отправлять связанные данные модели?Python

Программы на Python
Ответить
Anonymous
 Позволяет ли встроенный набор форм Django редактировать и отправлять связанные данные модели?

Сообщение 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



Подробнее здесь: https://stackoverflow.com/questions/798 ... model-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»