Mam problem z zapisaniem danych w formacie m2m, zawierających tabelę klasy "przez". Chcę zapisać wszystkich wybranych członków (wybranych w formularzu) w przelotowej tabeli. Ale nie wiem, jak zainicjować tabelę "przez" w widoku.Formularz Django m2m zapisz tabelę "przez"
mój kod:
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')
aw widzenia:
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()
Jak należy zainicjowanie członkostwa dla tabeli Membership być wypełniane w porządku?
to było to! To naprawdę stworzyło mi pewne bóle głowy, ponieważ jestem całkiem nowy dla Pythona. Thnx dużo! – dana
Pytanie: Jeśli chcę dodać twórcę klasy jako członka (required.user) i do tej listy, jak mogę to zrobić? Dzięki! – dana
Nie jestem pewien, czy rozumiem. Możesz utworzyć nowy obiekt członkowski (poza pętlą), aby utworzyć nowe połączenie między użytkownikiem a klasą (członkostwo = Membership.objects.create (member = request.user, classroom = new_obj) ) lub możesz przekazać dodatkowe member_id (czyli id request.user) w POST, a relacja user-classroom zostanie utworzona przy użyciu istniejącego kodu (dla pętli). W przypadku drugiej opcji należy zapisać plik request.user.id w ukrytym polu w formularzu. – dzida