Ich habe Probleme beim Speichern eines m2m Daten, enthält eine 'durch' Klassen-Tabelle. Ich möchte alle ausgewählten Mitglieder (ausgewählt in dem Formular) in der Durch-Tabelle speichern. Aber ich weiß nicht, wie man die 'durch' Tabelle in der Ansicht initialisiert.Django m2m Formular speichern "durch" Tabelle
mein Code:
class Classroom(models.Model):
user = models.ForeignKey(User, related_name = 'classroom_creator')
classname = models.CharField(max_length=140, unique = True)
date = models.DateTimeField(auto_now=True)
open_class = models.BooleanField(default=True)
members = models.ManyToManyField(User,related_name="list of invited members", through = 'Membership')
class Membership(models.Model):
accept = models.BooleanField(User)
date = models.DateTimeField(auto_now = True)
classroom = models.ForeignKey(Classroom, related_name = 'classroom_membership')
member = models.ForeignKey(User, related_name = 'user_membership')
und in der Ansicht:
def save_classroom(request):
classroom_instance = Classroom()
if request.method == 'POST':
form = ClassroomForm(request.POST, request.FILES, user = request.user)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.user = request.user
new_obj.save()
membership = Membership(member = HERE SELECTED ITEMS FROM FORM,classroom=new_obj)
membership.save()
Wie sollte ich die Mitgliedschaft für die Mitgliedschaft Tabelle initialisieren Recht auf bevölkert?
das war es! Es hat mir wirklich Kopfschmerzen bereitet, da ich neu bei Python bin. Thnx viel! – dana
Frage: Wenn ich den Ersteller des Klassenraums als Mitglied hinzufügen möchte (der required.user), und zu dieser Liste, wie kann ich das tun? Danke! – dana
Nicht sicher, ob ich Ihren Standpunkt verstanden habe. Sie können entweder ein neues Mitgliedschaftsobjekt (außerhalb der Schleife) erstellen, um eine neue Verbindung zwischen Benutzer und Klassenraum zu erstellen (membership = Membership.objects.create (member = request.user, classroom = new_obj) ) oder Sie können extra member_id übergeben (was ist ID von request.user) in POST und relation user-classroom wird unter Verwendung des vorhandenen Codes (for loop) erstellt. Für die zweite Option müssen Sie request.user.id in einem versteckten Feld in Ihrem Formular speichern. – dzida