Thanks everybody for your help. I will try what you have suggested and will come back with some more questions.
On Wednesday, August 22, 2012 4:57:47 PM UTC-7, Melvyn Sopacua wrote: > > Hi Nirmal, > > I'll try to answer your question instead of assuming you're working with > django's auth system. > > On 22-8-2012 7:13, Nirmal Sharma wrote: > > > class People (models.Model): > > person_name = models.CharField(max_length=150) > > > > > > class comments (models.Model): > > comment = models.CharField(max_length=1000) > > root_comment = models.ForeignKey('self', null=True, blank=True, > > related_name="children") > > People_id = models.ForeignKey(People) > ^^^^^^^^^^^^^^^ > That's bad practice, because you're not designing a database, you're > designing a model that is built from things, not id's. So name this > field person or commentator or written_by: > written_by = models.ForeignKey(People) > > Same applies on numerous fields below. The reason it's bad practice is > because when you request an attribute the name of the attribute should > describe what you get. When you request comments.people_id the > expectation is that you get an id, while in actuality you get a model > instance. > > > class comment_feedback (models.Model): > > feedback_People_id = models.ForeignKey(People) > > comment_id = models.ForeignKey(comments) > > feedback_type_id = models.CharField(max_length=20, > > choices=FEEDBACK_CHOICES) > > class Meta: > > unique_together = [("feedback_People_id", "info_id")] > > > > We are trying build a html page that will do the following. > > Once a user logs in, he can write a new comment (that would result in an > > insert into comments table) > > Alternatively he can do one of the following: > > select a comment of some other peoples and give his feedback (that > > would result in an insert into comment_feedback table) > > select a comment and write his own comment with a feedback on the > > original comment (that would result in an insert into comments table > with > > root_comment as the original comment and an insert into comment_feedback > > table for the original comment) > > Here's how to dissect your problem description: > - The person can do three things ("actions") that he cannot do at the > same time: the obvious solution is to use three different forms in the > same HTML page or use popup windows for action 2 and 3. > - The second and third option are mostly a UI problem, because how does > the user select the comment she's providing feedback for. Unless you put > a form below each comment (which will make the page possibly incredibly > long), you need to do some JavaScript programming that shows the form > below the right comment and stores the comment being commented on in > some hidden variables in that form. This is where I would hire a UI > programmer. > > > We tried doing this inlineformset_factory and nested formsets. However > we > > are quite confused on how to proceed with this. Also the > comment_feedback > > table has 2 foreign keys. > That isn't a problem as long as the foreign keys are to different > tables. inlineformset_factory will find the foreign key that goes from > parent_model to model in it's function signature. It uses > _get_foreign_key() in forms/models.py for that. > > > How do we handle this at the form and template level? > > Like I said, the selection process is mostly a UI nightmare. If you > solve that, creating the forms for it will be much easier to grasp. > -- > Melvyn Sopacua > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/72cZbiUA9qkJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.