é seguro para refatorar meus modelos de Django?

votos
1

Meu modelo é semelhante a este. É este o ok ou devo fazer a classe abstrata base comum? Quais são os differcenes entre este ou makeing-o abstrato e não ter uma tabela extra? Parece estranho que há apenas uma chave primária agora que eu ter consignado material para fora.

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()

É esta ok para levar material para fora intpu de entrada? Notei Casos e Argumentos compartilhar uma chave primária.

como isso:

    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
    )
Publicado 11/05/2009 em 05:43
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

De: web site django

classes base abstratas são úteis quando você quer colocar alguma informação comum em uma série de outros modelos. Você escreve sua classe base e colocar abstract = True na classe Meta. Este modelo, então, não pode ser usado para criar qualquer tabela de banco de dados. Em vez disso, quando ele é usado como uma classe base para outros modelos, seus campos serão somados aos da classe infantil.

Respondeu 23/05/2009 em 04:16
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more