2013-03-26 61 views
1

我想弄清楚人们将如何写评论,以及如何存储谁写和谁写的。我想看看为一个人写的评论UserProfile.Comments ...谁和谁在Django模型

任何人都可以帮助我吗?

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(这里我插)

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)) 

回答

1

我相信,你的模型可以创建有点不同,使这项工作更容易。只需要考虑一些事情。

  1. 每个用户可以有多个评论吗? UserProfile有一个名为comments的字段,暗示它可能是。这可能更好地模仿为多对多领域。

  2. 应该UserProfile链接到用户?

  3. 好像Comments可能需要支持2个用户,一个来自用户,另一个来自用户。


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? 

随着上述变化,得到了评论给用户或从用户变得轻松了许多

+0

是,用户可以有不同的人多条评论。 UserProfile已与具有OneToOne字段和信号的用户链接。 “to”应该是ManyToMany 我正在以您提供的方式检查代码。 是的,评论可能需要支持2个用户,一个来自用户,另一个来自用户。 – 2013-03-26 13:28:13