我想在 Django 1.8 中动态添加字段。
这是我的模型.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”个选项的复选框。
最佳答案
你弄错了基数。正如您所写的那样,关系是“一个作者有一本书,一本书有很多作者”,而您显然想要“一本书有一个作者,一个作者有很多书” - 或者可能是“一个或多个作者的书” ,一位作者有一本或多本书”。
在第一种情况下,您必须删除 ForeignKey
在Author
并添加 ForeignKey
至 Book
在Author
- 并使用 AdminInline
在Author
如果您希望能够从 AuthorAdmin
向作者添加书籍.
在第二种情况下,您需要一个 ManyToManyField
, 可以在 Book
中或 Author
...
关于python - 如何在 Django 中动态添加字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770316/