In meiner App erstellen Benutzer ein Projekt, erstellen ein Team und laden Teammitglieder ein, indem sie ihnen eine E-Mail senden, um sich bei der App anzumelden. Ich versuche herauszufinden, wie ich den eingeladenen Benutzer zu dem Team hinzufügen kann, das gerade erstellt wurde. Ich habe versucht mit: TeamMember.user = Benutzer, aber offensichtlich funktioniert es nicht;) Könnten Sie mir helfen, damit es funktioniert?Daten aus einem anderen Modell extrahieren und speichern
Registrierung/views.py:
def TeamRegister(request):
if request.method == 'POST':
form = TeamMembersForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
password = MyUser.objects.make_random_password()
user.set_password(password)
user.is_active = False
user.is_employee = True
TeamMember.user = user
user.save()
u1 = user.id
a1 = MyUser.objects.get(email = request.user.email)
a2 = Project.objects.filter(project_hr_admin = a1)
a3 = a2.latest('id')
a4 = a3.team_id
a4.members.add(u1)
current_site = get_current_site(request)
message = render_to_string('acc_active_email.html', {
'user':user,
'domain':current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
mail_subject = 'You have been invited to SoftScores.com please sign in to get access to the app'
to_email = form.cleaned_data.get('email')
email = EmailMessage(mail_subject, message, to=[to_email])
email.send()
return HttpResponse('An email have been sent to your user asking him to sign in')
else:
form = TeamMembersForm()
return render(request, 'team_register.html', {'form': form})
app/models.py
class Team(models.Model):
team_name = models.CharField(max_length=100, default = '')
team_hr_admin = models.ForeignKey(MyUser, blank=True, null=True)
members = models.ManyToManyField(MyUser, related_name="members")
def __str__(self):
return self.team_name
class Project(models.Model):
name = models.CharField(max_length=250)
team_id = models.ForeignKey(Team, blank=True, null=True)
project_hr_admin = models.ForeignKey(MyUser, blank=True, null=True)
def get_absolute_url(self):
return reverse('website:ProjectDetails', kwargs = {'pk' : self.pk})
def __str__(self):
return self.name
Würden Sie uns raten, die Teammitgliedmodelle zu löschen und dem Team von Teammitgliedern ein Attribut hinzuzufügen? – Ben2pop
Da das Dokument angibt, dass die Verwendung eines Zwischenmodells für eine Viele-zu-Viele-Beziehung dazu führen kann, dass einige der Methoden des zugehörigen Managers deaktiviert sind, funktionieren einige dieser Beispiele nicht mit solchen Modellen. – Ben2pop
@ Ben2pop Wenn Sie nicht planen, dem 'TeamMember' Modell irgendwelche Felder hinzuzufügen, würde ich empfehlen, es zu löschen, ja. – makaveli