Je travaille sur un formulaire personnalisé Django: J'ai débogué que la fonction form.is_valid ne fonctionne pas même si toutes les données sont dans la vue.Le formulaire Django ne s'exécute pas form.is_valid
models.py
choices = (
('yes', 'Yes'),
('no', 'No'),
('not sure', 'Not Sure'),
)
class TaggedArticle(models.Model):
user = models.ForeignKey(User, related_name='tagging')
category_fit = models.CharField(choices=choices, max_length=255)
article = models.ForeignKey(Article, related_name='articles')
relevant_feedback = models.TextField(blank=True)
created_at = models.DateTimeField(default=timezone.now, editable=False)
forms.py
class TagForm(forms.ModelForm):
class Meta:
model = TaggedArticle
fields = ('user', 'category_fit', 'article', 'relevant_feedback')
widgets = {
'category_fit': forms.RadioSelect()
}
views.py
def post(self, request, *args, **kwargs):
if request.method == 'POST':
post_data = request.POST.copy()
post_data.update({'user': request.user.pk})
form = forms.TagForm(post_data)
print('request recieved')
if form.is_valid():
tag = TaggedArticle()
tag.user = request.user
article = Article.objects.all().filter(id=form.cleaned_data['article'])
tag.category_fit = form.cleaned_data['category_fit']
tag.article = article
tag.relevant_feedback = form.cleaned_data['relevant_feedback']
tag.save()
return HttpResponse('Tagged Successfully!', status=200)
Mise à jour Je pense qu'il est l'erreur boutons radio: Voici comment je reçois cela de mon modèle:
<td><label class="radio-inline"><input type="radio" name="category_fit">Yes</label></td>
<td><label class="radio-inline"><input type="radio" name="category_fit">No</label></td>
<td><label class="radio-inline"><input type="radio" name="category_fit">Not Sure</label>
Aidez-moi, s'il vous plaît! Merci d'avance!
Salut, @Bear! il renvoie une erreur de cible! –
votre formulaire a une erreur, j'ai mis à jour la réponse, vous pouvez l'essayer –
je pense que c'est l'erreur de l'option radio category_fit, comment puis-je utiliser cette radio boutons dans mon modèle? S'il vous plaît! –