2013-03-26 5 views
1

Je suis en train de comprendre comment les gens vont écrire des commentaires et comment stocker pour qui il est écrit et qui écrit. Je voudrais voir les commentaires écrits pour une personne UserProfile.Comments ...qui et que sur les modèles django

Tout le monde peut me aider à ce sujet?

MODELS.PY

class UserProfile(models.Model): 
    comments = models.ForeignKey("Comments", null=True, blank=True) 


class Comments(models.Model): 
    comment = models.CharField(max_length=500, null=False, blank=False) 
    who_wrote = models.ForeignKey(User) 

VIEW.PY (ici i collé)

def writecomment(request, username): 
    if request.method == 'POST': 
     form = CommentForm(request.POST) 
     if form.is_valid(): 
      form.save(commit=False) 
      form.user = request.user 
      form.user_id = get_object_or_404(User, username=username).id 
      #frm = form.save() 

      usr = get_object_or_404(UserProfile, user = request.user) 
      usr.Comments = form #append?? 
      usr.save() 

    else: 
     form = CommentForm(request.POST) 

    return render_to_response("writecomment.html", {"form": form}, context_instance=RequestContext(request)) 

Répondre

1

Je crois que vos modèles pourraient être créés un peu différemment pour rendre cette tâche plus facile. Juste quelques choses auxquelles penser.

  1. Chaque utilisateur a plusieurs commentaires? UserProfile a un champ appelé comments suggérant qu'il pourrait être. Cela pourrait être mieux modélisé comme un champ de plusieurs à plusieurs.

  2. devrait établir un lien UserProfile à un utilisateur?

  3. Il semble que Comments puisse avoir besoin de supporter 2 utilisateurs, un de l'utilisateur et un de l'utilisateur.


class UserProfile(models.Model): 
    user = models.OneToOneField(User) # each user can have exactly 1 profile 
    comments = models.ManyToManyField(Comment) # each user can have mutilple comments 


class Comment(models.Model): 
    text = models.CharField(max_length=500, null=False, blank=False) 
    to = # shoudl this be foreign key or many to many? 
    # can a comment reference multiple users or just one user or no user? 

Avec les changements ci-dessus, d'obtenir les commentaires à un utilisateur ou d'un utilisateur devient beaucoup plus facile

+0

Oui, un utilisateur peut avoir plusieurs commentaires de différentes personnes. UserProfile est déjà lié à l'utilisateur avec OneToOne terrain et signal. « à » devrait être ManyToMany je vérifie le code de la manière que vous avez offert. Et oui, les commentaires peuvent avoir besoin de supporter 2 utilisateurs, un utilisateur et un utilisateur. –

Questions connexes