Django ajouter un champ supplémentaire à un ModelForm généré à partir d'un Modèle

Je dois générer un FormSet à partir d'un modèle, mais j'ai besoin d'insérer une "plus-value" dans toutes les formes.

Précisément, j'ai une JApplet qui génère de certains Marqueurs et les Chemins d'accès sur une image et la mettre sur le serveur.

Dans mon modèle les lignes sont composées de deux Marqueurs. Mais quand je POSTE, parce que je suis en utilisant l'identifiant généré à partir de la JApplet et non à partir de la base de données, je ne sais à partir de laquelle les Marqueurs d'un Chemin d'accès sera composé.

Alors j'ai pensé à insérer une "identité temporaire" sur le Marqueur sur la forme, et de faire les dispositions correctes dans la vue avant d'enregistrer le Chemin d'accès.

J'ai pensé à la définition d'un formulaire personnalisé pour les marqueurs, mais il ne semble pas très SEC, et je ne veux pas revins à cette si je change le Marqueur de modèle.

Ici est de la forme:

  class PointForm(forms.ModelForm):
    temp_id = forms.IntegerField()
    class Meta:
            model = Point

    def clean(self):
            if any(self.errors):
                    # Don't bother validating the formset unless each form is valid on its own
                    return

            ingresso = self.cleaned_data['ingresso']
            ascensore = self.cleaned_data['ascensore']
            scala = self.cleaned_data['scala']

            if (ingresso and ascensore) or (ingresso and scala) or (ascensore and scala):
                    raise forms.ValidationError("A stair cannot be a elevator or an access!!!") 
            return self

    def save(commit=True):
    # do something with self.cleaned_data['temp_id']
            super(PointForm).save(commit=commit)

Et le modèle:

  class Point(models.Model):

    RFID = models.CharField(max_length=200, blank=True)

    x = models.IntegerField()
    y = models.IntegerField()

    piano = models.ForeignKey(Floor)

    ingresso = models.BooleanField()

L'erreur:

  ViewDoesNotExist at /admin/
  Could not import buildings.views.getFloors. View does not exist in module buildings.views.
  Request Method:   GET
  Request URL:  http://127.0.0.1:8000/admin/
  Django Version:   1.4.1
  Exception Type:   ViewDoesNotExist
  Exception Value:  
  Could not import buildings.views.getFloors. View does not exist in module buildings.views.
  Exception Location:   /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in get_callable, line 101

L'erreur est générée lorsque j'essaie de charger l'admin de la page, cette page n'a pas de références à tous avec le formulaire.

SOLUTION D'EXCEPTION

Ok, je vais écrire ici comment savoir pourquoi Django a été de faire une telle chose étrange.

Ici c'est une bonne façon de savoir ce qui est le problème.

L'exception a été levée, car j'ai oublié d'ajouter forms.py à la from django import forms.

  • Et, si je supprime getFloors de url.py il appelle une erreur de manque de vue sur l'url suivant dans url.py... Est-ce un bug?
InformationsquelleAutor Marco Fedele | 2012-11-25