我想在Django 1.8中动态添加字段。
这是我的models.py
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
这是我的admin.py
class AuthorAdmin(admin.ModelAdmin):
admin.site.register(Author, AuthorAdmin)
class BookAdmin(admin.ModelAdmin):
admin.site.register(Book, BookAdmin)
以下是现在的样子:
我已尝试使用Inline,但我也只能添加新书。
我该怎么做?
修改
我已将AuthorAdmin更改为:
class AuthorAdmin(admin.ModelAdmin):
formfield_overrides = {
models.ManyToManyField: {'widget': CheckboxSelectMultiple},
}
admin.site.register(Author, AuthorAdmin)
但不是一个带有" N"的复选框。选项,我想" N"文本框选择书籍。
答案 0 :(得分:3)
你的基数是错误的。正如你所写的那样,关系是“作者有一本书,一本书有很多作者”,而你显然想要“一本书有一位作者,一位作者有很多书” - 或者可能是“一本书作为一本或多位作者” ,作者有一本或多本书“。
在第一种情况下,您必须移除ForeignKey
中的Author
并在ForeignKey
中向Book
添加Author
- 并使用{{如果您希望能够从AdminInline
向作者添加图书,请在Author
中添加1}}。
在第二种情况下,您需要一个AuthorAdmin
,它可以位于ManyToManyField
或Book
...
答案 1 :(得分:1)