У меня есть modelForm, где я перезаписываю метод init , чтобы получить предопределенное значение из FK.Однако при проверке формы с помощью метода is_valid () происходит сбой, поскольку он говорит, что «Palabras» уже существует, но не принимает во внимание FK «fk_funcion», так как оба являются PK.
Models.py
class Palabras(models.Model):
fk_funcion = models.ForeignKey(Funcion, related_name='funcion', on_delete=models.CASCADE)
palabra = models.CharField(max_length=30, unique=True)
porcentaje = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(100)])
class Meta:
unique_together = ("fk_funcion", "palabra"),
def __str__(self):
return self.palabra
Forms.py
class PalabraForm(forms.ModelForm):
class Meta:
model = Palabras
fields = ('palabra','porcentaje', "fk_funcion")
def __init__(self, *args, **kwargs):
fk_funcion = kwargs.pop('fk_funcion','')
super(PalabraForm, self).__init__(*args, **kwargs)
self.fields['fk_funcion']=forms.ModelChoiceField(queryset=Funcion.objects.filter(id=fk_funcion))
Views.py
def create_palabra(request, pk_funcion):
data = dict()
if request.method == 'POST':
form = PalabraForm(request.POST,fk_funcion=pk_funcion,,initial={'fk_funcion':pk_funcion}) #I have tried with and without the initial value
if form.is_valid():
#Some action
Что янеобходимо изменить, чтобы сделать форму для проверки "palabra" и "fk_funcion" в modelForm.
Спасибо