QuestionOrAnswer model?
Posted
by Mark
on Stack Overflow
See other posts from Stack Overflow
or by Mark
Published on 2010-03-20T01:08:25Z
Indexed on
2010/03/20
1:11 UTC
Read the original article
Hit count: 274
My site has Listings
. Users
can ask Questions
about listings, and the author of the listing can respond with an Answer
. However, the Answer
might need clarification, so I've made them recursive (you can "answer" an answer).
So how do I set up the database? The way I have it now looks like this (in Django-style models):
class QuestionOrAnswer(Model):
user = ForeignKey(User, related_name='questions')
listing = ForeignKey(Listing, related_name='questions')
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
message = TextField()
But what bugs me is that listing
is now an attribute of the answers as well (it doesn't need to be). What happens if the database gets mangled and an answer belongs to a different listing than its parent question? That just doesn't make any sense. We can separate it with polymorphism:
QuestionOrAnswer
user
message
created
updated
Question(QuestionOrAnswer)
shipment
Answer(QuestionOrAnswer)
parent = ForeignKey(QuestionOrAnswer)
And that ought to work, but now ever question and answer is split into 2 tables. Is it worth this overhead for clearly defined models?
© Stack Overflow or respective owner