Форма django не сохраняется в базе данных (нет сообщения об ошибке)
Прежде всего, я прошу прощения за использование переводчика, поскольку я не знаком с английским языком.
Мой Views.py
def my_create_view(request):
if "reg" in request.method == 'POST':
first_form = FirstRegForm(request.POST, prefix='firstform')
second_form = SecondRegForm(request.POST, prefix='secondform')
if all([first_form.is_valid(), second_form.is_valid()]):
form = first_form.save(commit=False)
form.created_name = request.user.user_name
form.save()
formm = second_form.save(commit=False)
formm.shop_seq = form
formm.save()
return redirect('someview')
else:
first_form = FirstRegForm(prefix='store')
second_form = SecondRegForm(prefix='input')
return render(request, 'app/template.html', {'first_form': first_form, 'second_form': second_form})
My Models.py
from django.db.models import Max
class My_user(AbstractBaseUser):
shop_seq = models.ForeignKey('My_shop', null=True, blank=True, on_delete=models.SET_NULL, db_column="shop_seq")
user_name = models.CharField(max_length=50)
class My_shop(models.Model):
shop_seq = models.CharField(primary_key=True, editable=False, max_length=5)
shop_name = models.CharField(max_length=20, null=True)
shop_code = models.CharField(max_length=15, null=True, unique=True)
shop_address = models.CharField(max_length=40, null=True)
shop_tel = models.CharField(max_length=20, null=True)
created_name = models.CharField(max_length=100, null=True)
def save(self, **kwargs):
if not self.shop_seq:
max = Rate.objects.aggregate(shop_seq_max=Max('shop_seq'))['shop_seq_max'] + 1
self.shop_seq = "{:05d}".format(max if max is not None else 1)
super().save(*kwargs)
class My_model(models.Model):
model_id = models.BigAutoField(primary_key=True)
my_field = models.CharField(max_length=20, null=True)
some_field = models.CharField(max_length=20, null=True)
shop_seq = models.ForeignKey('My_shop', on_delete=models.SET_NULL, null=True, db_column="shop_seq", related_name="shop_model")
My Forms.py
class FirstRegForm(forms.ModelForm):
class Meta:
model = My_shop
fields = ('shop_name', 'shop_code', 'shop_address', 'shop_tel',)
class SecondRegForm(forms.ModelForm):
class Meta:
model = My_model
fields = ('my_field', 'some_field',)
Мой Template.py
<form method="post">{% csrf_token %}
{{ first_form.shop_name }}
{{ first_form.shop_code }}
{{ first_form.shop_address }}
{{ first_form.shop_tel }}
{{ second_form.my_field }}
{{ second_form.some_field }}
<input class="btn btn-dark" name="reg" type="submit" value="reg">
</form>
Если вы отправите его в этом состоянии, он не будет сохранен в базе данных (без сообщения об ошибке)
Что не так с моим кодом?
Эта строка всегда будет оцениваться как false:
if "reg" in request.method == 'POST'
Вы должны изменить его на:
if request.method == 'POST':