Python 如何在Django中动态添加字段?

Python 如何在Django中动态添加字段?,python,django,django-admin,Python,Django,Django Admin,我想在Django 1.8中动态添加字段 这是我的模特 class Book(models.Model): title = models.CharField(max_length=100) def __str__(self): return self.title class Author(models.Model): name = models.CharField(max_length=100) books = models.ManyToManyFie

我想在Django 1.8中动态添加字段

这是我的模特

class Book(models.Model):
   title = models.CharField(max_length=100)

   def __str__(self):
        return self.title

class Author(models.Model):
   name = models.CharField(max_length=100)
   books = models.ManyToManyField(Book)

   def __str__(self):
        return self.name
这是我的管理员

class AuthorAdmin(admin.ModelAdmin):
admin.site.register(Author, AuthorAdmin)

class BookAdmin(admin.ModelAdmin):
admin.site.register(Book, BookAdmin)
下面是它现在的样子:

我尝试过使用,但我也只能添加一本新书

我希望能够向一个作者动态添加多本书。 大概是这样的:

我该怎么做

编辑:

我已将AuthorAdmin更改为:

class AuthorAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.ManyToManyField: {'widget': CheckboxSelectMultiple},
    }
admin.site.register(Author, AuthorAdmin)


但是,我希望使用“N”文本框来选择书籍,而不是一个带有“N”选项的复选框。

您需要为书籍使用
manytomy
字段:

books = models.ManyToManyField(Book)

对于
manytomy

您需要使用图书的
manytomy
字段:

books = models.ManyToManyField(Book)

对于
manytomy

来说,您的基数是错误的。正如你所写,这种关系是“一个作者有一本书,一本书有许多作者”,而你显然想要“一本书有一个作者,一个作者有许多书”——或者可能是“一本书有一个或多个作者,一个作者有一本或多本书”

在第一种情况下,您必须删除
作者
中的
外键
,并将
外键
添加到
作者
中的
书籍
,如果您想从
作者管理员
向作者添加书籍,则必须在
作者
中使用
管理员内联


在第二种情况下,您需要一个
ManyToManyField
,它可以在
Book
Author
中,

您的基数取错了。正如你所写,这种关系是“一个作者有一本书,一本书有许多作者”,而你显然想要“一本书有一个作者,一个作者有许多书”——或者可能是“一本书有一个或多个作者,一个作者有一本或多本书”

在第一种情况下,您必须删除
作者
中的
外键
,并将
外键
添加到
作者
中的
书籍
,如果您想从
作者管理员
向作者添加书籍,则必须在
作者
中使用
管理员内联


在第二种情况下,您需要一个
ManyToManyField
,它可以在
Book
Author
中。

一个
ManyToManyField
意味着一本
书可以有多个作者。虽然wrt/“真实世界”很有意义,但它不一定是OP应用程序的合适域模型。
ManyToManyField
意味着一本
书可以有多个作者。虽然wrt/“真实世界”有意义,但它不一定是OP应用程序的合适域模型。