Python 如何在Django中动态添加字段?
我想在Django 1.8中动态添加字段 这是我的模特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
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应用程序的合适域模型。