2016-05-16 21 views
0

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 

Antwort

2

Ich gehe davon aus Autor eine Beziehung Benutzer hat.

{{item.author.user.id}} 
+0

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. –

Verwandte Themen