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.

Reply via email to