There is a model Listaflor linked to Estados with another model named Flora2Estado, i made a form with ModelMultipleChoiceField. It saves successfully into Listaflor but nothing into the Flora2Estado, what can i do about this?
forms.py
class FloForm(forms.ModelForm):
familia = forms.ModelChoiceField(queryset=Familia.objects.all().order_by('familia_nome').filter(aprovado=1))
Especie = forms.CharField(label="Nome da espécie*")
estados = forms.ModelMultipleChoiceField(queryset=EstadosM.objects.all().order_by('nome_abbr'))
class Meta:
model = Listaflor
ordering = ["estados",]
fields = ['Especie','estados']
views.py
def CreateFlo(request):
form = FloForm()
if request.method == 'POST':
form = FloForm(request.POST)
if form.is_valid():
Listaflor = form.save(commit=False)
Flora2Estado = form.save(commit=False)
Listaflor.save()
Flora2Estado.save()
return render(request,'accounts/enviar_flora.html')
models.py
class Flora2Estado(models.Model):
estado = models.ForeignKey(EstadosM, models.CASCADE)
especie = models.ForeignKey(Listaflor, models.CASCADE)
flora2estado = models.AutoField(primary_key=True)
class Meta:
managed = False
db_table = 'flora2estado'
unique_together = (('estado', 'especie'),)
Any tips on helping me making a better post is welcome, have a good day!
View.py updated: returning Validation error!
def CreateFlo(request):
EstadosInlineFormSet = inlineformset_factory(Listaflor, Flora2Estado, form=Flo2Form)
Form = FloForm(request.POST)
storeForm = FloForm(request.POST)
if Form.is_valid():
new_store = storeForm.save()
florInlineFormSet = EstadosInlineFormSet(request.POST or None, request.FILES or None, instance=new_store)
if florInlineFormSet.is_valid():
florInlineFormSet.save()
context = {'form': Form}
return render(request,'accounts/enviar_flora.html', context)
models.py:
class Flora2Estado(models.Model):
estado = models.ForeignKey(EstadosM, models.CASCADE)
especie = models.ForeignKey(Listaflor, models.CASCADE)
flora2estado = models.AutoField(primary_key=True)
class Meta:
managed = False
db_table = 'flora2estado'
unique_together = (('estado', 'especie'),)
class Listaflor(models.Model):
especie_id = models.AutoField(primary_key=True)
familia = models.ForeignKey(Familia, models.DO_NOTHING, db_column='familia_id', blank=True, null=True)
Especie = models.CharField(db_column='especie', max_length=255, blank=True, null=True)
I tried this:
def CreateFlo(request):
form = FloForm()
if request.method == 'POST':
form = FloForm(request.POST)
if form.is_valid():
listafor = form.save()
estados = form.cleaned_data.get('estados')
for estado in estados:
Flora2Estado.objects.create(especie=listafor, estado= estado)
texto="..."
context = {'floForm': form,'texto': texto}
return render(request, 'accounts/enviar_flora.html', context)
got the error:
django.db.utils.IntegrityError: (1062, "Duplicate entry '18-3256' for key 'PRIMARY'")