2012-04-03 7 views
0

Ich habe Kursmodell und der Kurs bestehen aus mehreren Dateien (nur Link zu Datei gespeichert, Datei nicht auf den Server hochgeladen). Die Anzahl der Dateien ist unbekannt, der Benutzer kann neue Links zur Datei mit JS hinzufügen. Und diese Links können in Form bearbeitet werden:Django speichern automatisch generierten Formular aus DB

I erhalten und fügen Sie neue Kurs Links auf folgende Weise:

links = request.POST.getlist('course-dl-links') 

for link in links: 
    CourseFile.objects.create(
     link = link, 
     course = course 
    ) 

und kann dynamisch bearbeiten Form erzeugen:

class CourseForm(forms.Form): 
    # fields... 

    def __init__(self, data = None, *args, **kwargs): 
     super(CourseForm, self).__init__(data, *args, **kwargs) 
     files = CourseFile.objects.filter(course__id=data.course_id).all() 

     for course_file in files: 
      self.fields['course-dl-links-%d' % (course_file.id,)] = forms.CharField(initial=course_file.path) 

Aber Speichern Sie das Formular in dieser Form ist schwierig. Wie man es auf dem Django Weg macht?

Antwort

1

ein zusätzliches Modell hinzufügen:

class CourseLink(models.Model): 
    course = models.ForeignKey(Course) 
    link = models.CharField(max_length=255) 

# Add a course link 
CourseLink.objects.create(course=course, link='http://www.google.nl') 

# Add another course link 
CourseLink.objects.create(course=course, link='http://www.stackoverflow.com') 
+0

Sorry, bin ich gefragt schlecht die Frage. Es gibt keine Probleme mit dem Speichern von Links, da ist das Problem, wie man automatisch generierte Felder 'fields ['course-dl-links-% d'% (Kursdatei.id,)]' 'und ids in der db-Tabelle bekommt, die das sollten bleibe auf dem Laufenden. Vielleicht gibt es einen besseren Weg, es zu tun? – Deadly