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