Ich habe nach Antworten auf dieses Problem gesucht und es gibt viele, wie Sie die ID des angemeldeten Benutzers erhalten, alles, was in der Vorlage benötigt wird, ist {{user.id }}. Ich habe einen Autorennamen für einen Beitrag in einem Forum, {{item.author}}. Dieser Autor ist nicht der angemeldete Benutzer. Ist es möglich, die ID dieses Autors zu erhalten, ohne eine Abfrage in der Ansicht durchführen zu müssen?Django ID des Benutzers, der nicht aktuellen Benutzer ist
Ich habe versucht, einen fremden Schlüssel zu verwenden, um das topicmodel und das Benutzermodell zu beziehen, aber das gibt mir Probleme mit einem Formular, das ich habe, in dem ein Thema und ein Beitrag zusammen gespeichert werden. Ich habe die Instanz nicht korrekt erstellt. Hier ist die Ansicht, dass ich nicht zur Arbeit bekommen kann,
def topic_form(request):
if request.method == "POST":
userInstance = get_object_or_404(User, username = request.user)
Tform = TopicForm(request.POST)
Pform = PostForm(request.POST, instance=userInstance)
if Tform.is_valid() and Pform.is_valid():
tform = Tform.save(commit=False)
tform.topicAuthor = request.user
tform.author = userInst #this needs to be a user instance
tform.save() #returns request and id
pform = Pform.save(commit=False)
pform.topic = tform
pform.author = request.user
pform.pub_date = timezone.now()
pform.save()
return redirect('init')
else:
topicform = TopicForm()
postform = PostForm()
return render(request, 'new_topic.html', {'topicform': topicform, 'postform': postform})
Dies sind die Modelle
class TopicModel(models.Model):
topic = models.CharField(max_length = 100)
topicAuthor = models.CharField(max_length = 100)
author = models.ForeignKey(User, related_name = 'id_of_author')
views = models.PositiveIntegerField(default = 0)
def __str__(self): # __unicode__ on Python 2
return self.topic
class PostModel(models.Model):
post = HTMLField(blank = True, max_length = 1000)
pub_date = models.DateTimeField('date published')
author = models.CharField(max_length = 30)
topic = models.ForeignKey(TopicModel, related_name = 'posts')
def __str__(self): # __unicode__ on Python 2
return self.post
Sie sind nicht verwandt. Ich wollte sehen, ob es möglich war, weil ich einen Fremdschlüssel vom Autor zum Benutzer erstellt habe, aber das verursacht alle Arten von Problemen in der Ansicht, wenn ich POST-Daten von einem Formular speichere. Ich habe die ursprüngliche Frage oben aktualisiert, um zu zeigen, wie ich versucht habe, dieses Problem zu lösen. –