Mon modèle est similaire à celui-ci. Est-ce correct ou devrais-je rendre la classe de base commune abstraite? Quels sont les differcenes entre ceci ou le rendant abstrait et ne pas avoir une table supplémentaire? Il semble étrange qu'il n'y ait qu'une seule clé primaire maintenant que j'ai pris en compte les choses.est-il sûr de refactoriser mes modèles django?
class Input(models.Model):
details = models.CharField(max_length=1000)
user = models.ForeignKey(User)
pub_date = models.DateTimeField('date published')
rating = models.IntegerField()
def __unicode__(self):
return self.details
class Case(Input):
title = models.CharField(max_length=200)
views = models.IntegerField()
class Argument(Input):
case = models.ForeignKey(Case)
side = models.BooleanField()
est-ce ok pour factoriser les choses intpu Entrée? J'ai remarqué que les cas et les arguments partagent une clé primaire.
comme ceci:
CREATE TABLE "cases_input" (
"id" integer NOT NULL PRIMARY KEY,
"details" varchar(1000) NOT NULL,
"user_id" integer NOT NULL REFERENCES "auth_user" ("id"),
"pub_date" datetime NOT NULL,
"rating" integer NOT NULL
)
;
CREATE TABLE "cases_case" (
"input_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "cases_input" ("id"),
"title" varchar(200) NOT NULL,
"views" integer NOT NULL
)
;
CREATE TABLE "cases_argument" (
"input_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "cases_input" ("id"),
"case_id" integer NOT NULL REFERENCES "cases_case" ("input_ptr_id"),
"side" bool NOT NULL
)