Speichern eines Formulares funktioniert nicht

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
delle
User
Beiträge: 15
Registriert: Freitag 7. November 2008, 15:00

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]
Zuletzt geändert von delle am Freitag 7. November 2008, 16:34, insgesamt 2-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Und da dein Code sehr lang ist packst du ihn am besten in eine Paste Bin Das erleichtert das antworten sehr.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

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
delle
User
Beiträge: 15
Registriert: Freitag 7. November 2008, 15:00

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
Antworten