XIV aprendendo Django design da tabela de banco de dados: muitos para muitos, um para um, um para muitos

A-muitos design da tabela, ManyToManyField campos associados.

 

Relações Livro e Autor: um livro pode ter vários autores, um autor pode publicar mais do que um livro, é muitos-mode

1.1 Código models.py:

classe Autor (models.Model): 

    "" " 作者""" 

    nome = models.CharField (max_length = 20, verbose_name = " 作者" ) 
    correio = models.CharField (max_length = 20, verbose_name = " 邮箱" ) 
    de endereços = modelos .CharField (max_length = 50, verbose_name = " 籍贯" ) 
    móvel = models.CharField (max_length = 11, verbose_name = " 手机号" ) 

    class Meta: 

        verbose_name_plural = " 作者"

    def  __str__ (self):

        voltar a self.name 


classe Book (models.Model): 

    '' ' 
    informações do livro 
    ' '' 

    BOOK_NAME = models.CharField (MAX_LENGTH = 100, o verbose_name = " título " ) 

    # muitos- 
    auth = models.ManyToManyField (Autor, verbose_name = " autor " ) 

    class Meta: 

        verbose_name_plural = " livros " 

    DEF  __str__ (self): 

        return self.book_name

1.2 executar python makemigrations manage.py voto e python manage.py migrar

1.3 Registro de admin.py

classe ControlAuthor (admin.ModelAdmin): 

    list_display = [ ' nome ' , ' e-mail ' , ' endereço ' , ' mobile ' ] 

classe ControlBook (admin.ModelAdmin): 

    list_display = [ ' BOOK_NAME ' , ' book_auth ' ]
     
# definir um método atravessando livro auth, e depois retorna com uma lista
DEF book_auth (self, obj): retorno [a.name para um em obj.auth.all ()] admin.site.register (models.Author, ControlAuthor) admin.site.register (models.Book, ControlBook)

1,4 navegador para acessar os resultados:

 

 Após a conclusão do livro, o banco de dados irá gerar uma relação mesa-muitos

 

Acho que você gosta

Origin www.cnblogs.com/chushujin/p/12533851.html
Recomendado
Clasificación