Speichern eines Formulares funktioniert nicht

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

Speichern eines Formulares funktioniert nicht

Beitragvon delle » Freitag 7. November 2008, 15:11

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 7. November 2008, 15:45

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 Modvoice
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Freitag 7. November 2008, 17:09

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

Beitragvon Dauerbaustelle » Freitag 7. November 2008, 17:56

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

Beitragvon delle » Freitag 7. November 2008, 18:39

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder