Я испробовал все способы сохранить в базе данных две одинаковые структурные записи, предъявив иск django. Не знаю почему, но всегда сохраняется только последняя запись. Я создаю сеть для рецептов. И теперь я пытаюсь одной кнопкой сохранить все меню одного дня, что на завтрак, что на ужин .... И я не могу представить, как заставить меня работать. Справка
[мой пользовательский интерфейс] [1]
tripdishes_form. html
{% if form.instance.id %}
{% endif %}
<form class="form" action="
{% if form.instance.id %}
{% url 'dishes:update' form.instance.id %}
{% endif %}"
method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="row">
<div class="col-3">
<input type="hidden" name="date" value="{{ trip_date }}"><br><br>
<input type="hidden" name="trip_id" value="{{ trip_pk }}"><br><br>
</div>
</div>
<div class="row">
<div class="col-3">
{{ form1.dish_id|as_crispy_field }}
</div>
<div class="col-3">
{{ form1.meal_time_type|as_crispy_field }}
</div>
</div>
<div class="row">
<div class="col-3">
{{ form2.dish_id|as_crispy_field }}
</div>
<div class="col-3">
{{ form2.meal_time_type|as_crispy_field }}
</div>
</div>
</div>
<br>
<button class="button" type="submit">
{% if form.instance.id %}
Update
{% else %}
Create
{% endif %}
</button>
</form>
<div>
{% endblock %}
forms.py
from django import forms
from .models import TripDishes
class TripDishForm(forms.ModelForm):
class Meta:
model=TripDishes
fields=['trip_id','dish_id','date','meal_time_type',]
widgets = {
}
views.py
class TripDishesCreateView(LoginRequiredMixin, CreateView):
model = TripDishes
fields = ['date', 'meal_time_type', 'trip_id', 'dish_id']
labels = {
'date': 'Data',
'meal_time_type': 'Dienos metas',
}
success_url = reverse_lazy('dishes:dishlist')
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(**kwargs)
context['dishlist'] = Dish.objects.all()
a = self.kwargs.get("pk")
context['yra'] = self.kwargs.get("pk")
context['trip_title'] = Trip.objects.filter(pk=a).values_list('title')[0][0]
context['trip_pk'] = Trip.objects.filter(pk=a).values_list('pk')[0][0]
context['trip_date'] = Trip.objects.filter(pk=a).values_list('start_date')[0][0]
return context
def get(self,request,*args,**kwargs):
if request.method == 'POST':
form_1 = TripDishForm(request.POST, prefix="form-1")
form_2 = TripDishForm(request.POST, prefix="form-2")
if form1.is_valid() and form2.is_valid():
form1.process()
save1 = form1.save(commit=True)
save1.save()
form2.process()
save2 = form2.save(commit=True)
save2.save()
else:
form_1 = TripDishForm()
form_2 = TripDishForm()
context = {
'form1': form_1,
'form2': form_2
}
return render(request, 'dishes/tripdishes_form.html', context)
Я не знаю, нужно ли мне использовать forms.py, но я пробовал очень много способов сделать это. ..
[1]: https://i.stack.imgur.com/OoEew.png