Seite 1 von 1

Speichern eines Formulares funktioniert nicht

Verfasst: Freitag 7. November 2008, 15:11
von delle
Hi,

totaler Neuling !

ich bekomme die POST Daten nicht abgespeichert. Any help ?
Die print habe ich nur zum debuggen drin.

Und wie bekomme ich POST Werte von den check boxen im Formular, wenn sie nicht makiert sind ?



Ausschnitt aus view.py

Code: Alles auswählen

[code=py]@login_required
def detail_task(request, task_id):
    
    auth_ok = 1

    deta = get_object_or_404(Item, pk = task_id) 

    if request.POST:
        try:
      		     print request.POST["kunde"]
		     deta.detail.kunde = request.POST["kunde"]
      		     print request.POST["am"]
		     deta.detail.am = request.POST["am"]
      		     print request.POST["cm"]
		     deta.detail.cm = request.POST["cm"]
      		     print request.POST["link_gate"]
		     deta.detail.link_gate = request.POST["link_gate"]
      		     print request.POST["freigabe_erfolgt"]
		     deta.detail.freigabe_erfolgt = request.POST["freigabe_erfolgt"]
      		     print request.POST["unterlagen_gesichtet"]
		     deta.detail.unterlagen_gesichtet = request.POST["unterlagen_gesichtet"]
      		     print request.POST["intern_kickoff_termin"]
		     deta.detail.intern_kickoff_termin = request.POST["intern_kickoff_termin"]
      		     print request.POST["Angebots_dokument"]
		     deta.detail.Angebots_dokument = request.POST["Angebots_dokument"]
      		     print request.POST["LL_anfragen_definiert"]
		     deta.detail.LL_anfragen_definiert = request.POST["LL_anfragen_definiert"]
      		     print request.POST["offene_punkte"]
		     deta.detail.offene_punkte = request.POST["offene_punkte"]
      		     print request.POST["LL_angefragt"]
		     deta.detail.LL_angefragt = request.POST["LL_angefragt"]
      		     print request.POST["LL_antworten"]
		     deta.detail.LL_antworten = request.POST["LL_antworten"]
                     
		     de = deta.detail.save()
                     print de
        except:
		 request.user.message_set.create(message="Fehler beim schreiben")
		
    else:
	try:

            de = deta.detail

        except:
	    
	    de = detail(item=deta)
	    de.save()

    return render_to_response('todo/detail_task.html', locals(), context_instance=RequestContext(request))  
 


-----------> model.py

from django.db import models
from django.forms.models import ModelForm
from django import forms
from django.contrib import admin
from django.contrib.auth.models import User,Group
import string, datetime



class List(models.Model):
    name = models.CharField(max_length=60)
    slug = models.SlugField(max_length=60,editable=False)
    group = models.ForeignKey(Group)
    
    def save(self):
        if not self.id:
            # Replace spaces in slug with hyphens, and lowercase.
            self.slug = (self.name).lower().replace(' ','-')
            
            # Regex to remove non-alphanumeric chars, using re (regular experession module)
            # If we end up with double hyphens, remove those too.
            import re
            self.slug = re.sub(r"[^A-Za-z0-9\-]", "", self.slug).replace('--','-')

            super(List, self).save()

    def __unicode__(self):
        return self.name
        
    class Meta:
        ordering = ["name"]        
        verbose_name_plural = "Lists"
        
        # Prevents (at the database level) creation of two lists with the same name in the same group
        unique_together = ("group", "slug")
        
        
        
class Item(models.Model):
    name = models.CharField(max_length=140)
    list = models.ForeignKey(List)
    created_date = models.DateField()    
    due_date = models.DateField(blank=True,null=True,)
    target_date = models.DateField(blank=True,null=True,)
    completed = models.BooleanField()
    completed_date = models.DateField(blank=True,null=True)
    created_by = models.ForeignKey(User, related_name='created_by')
    assigned_to = models.ForeignKey(User, related_name='assigned_to')
    
    PRIORITY_CHOICES = (
         ('1', '1'),
         ('2', '2'),
         ('3', '3'),
         ('4', '4'),
         ('5', '5'),                                    
     )
    priority = models.PositiveIntegerField(max_length=1, choices=PRIORITY_CHOICES,default=3)
    
    # Model method: Has due date for an instance of this object passed?
    def overdue_status(self):
        "Returns whether the item's due date has passed or not."
        if datetime.date.today() > self.due_date :
            return 1

    def hot_status(self):
        "Returns whether the item's due date has passed or not."
        if (datetime.date.today() + datetime.timedelta(days=4)) > self.due_date :
            return 1
    
    def __unicode__(self):
        return self.name
        
    # Auto-set the item creation date
    def save(self):
        # Set datetime on initial item save (better than deprecated auto_now_add)
        if not self.id:
            self.created_date = datetime.datetime.now()
            # print self.created_date
        else:
            # print self.created_date
            pass
        super(Item, self).save()


    class Meta:
        ordering = ["priority"]        

class detail(models.Model):
      item = models.OneToOneField(Item, primary_key=True)
      kunde = models.CharField(max_length=50,  blank=True,null=True,)
      am = models.CharField(max_length=30, blank=True,null=True,)
      cm = models.CharField(max_length=30, blank=True,null=True,)
      link_gate = models.FilePathField(path="c:\private", blank=True,null=True,)
      freigabe_erfolgt = models.BooleanField()
      unterlagen_gesichtet = models.BooleanField()
      intern_kickoff_termin = models.DateField(auto_now=False, auto_now_add=False, blank=True,null=True,)
      Angebots_dokument = models.IntegerField(blank=True,null=True,)
      LL_anfragen_definiert = models.BooleanField()
      offene_punkte = models.TextField(blank=True,null=True,)
      LL_angefragt = models.BooleanField()
      LL_antworten = models.IntegerField(blank=True,null=True,)
      LL_offene_punkte = models.TextField(blank=True,null=True,)

      def __unicode__(self):
        return self.kunde
[/code][/code]

Verfasst: Freitag 7. November 2008, 15:45
von Leonidas
Hallo delle, willkommen im Forum,

Wie dir vielleicht aufgefallen ist, gibt es im Forum-Code Tags die den Quelltext richtig eingerückt anzeigen und farblich hervorheben. Diese solltest du erstmal nutzen, indem du deinen Beitrag editierst. Danach können wir weiterschauen.

Verfasst: Freitag 7. November 2008, 17:09
von cofi
Und da dein Code sehr lang ist packst du ihn am besten in eine Paste Bin Das erleichtert das antworten sehr.

Verfasst: Freitag 7. November 2008, 17:56
von Dauerbaustelle
Hallo,

bei sowas solltest du in der HTML-Spezifikation bzw. -Dokumentation nachschauen (selfhtml.org).

Eine Checkbox, die markiert ist, gibt als Wert "on" zurück. Eine nicht markierte gibt "" (also einen leeren String) zurück.

Grüße

Verfasst: Freitag 7. November 2008, 18:39
von delle
Hai,

gebt euch keine Mühe, ich bin wohl auf falschen Pfad.

Ich sollte wohl die forms bibliotheken benutzen.

Ich muß noch ein bischen lesen.

r/Delle