我最近升级到了Django 1.2.1,因为我对have basic many-to-many inline fields的能力有特别的兴趣。当使用像这样的管理:Django 1.2.1多行到多行的内联管理
初始模型:
class Ingredient(models.Model):
name = models.TextField()
class Recipe(models.Model):
ingredients = models.ManyToManyField(Ingredient)
初始管理员:
class IngredientInline(admin.TabularInline):
model = Recipe.ingredients.through
class RecipeOptions(admin.ModelAdmin):
inlines = [IngredientInline,]
exclude = ('ingredients',)
admin.site.register(Recipe,RecipeOptions)
我得到了什么是相同的形式,你会在多对多场通常会看到,有一些额外的行。使用诸如Ingredient ModelForm之类的额外参数提供它并没有帮助。怀疑基本的ModelForm关联可能会出现问题,通过model = Foo.manyfields.through,我决定看看中介模型是否有帮助。
新型号:现在通过显示一个工作直列形式
class RecipeJoin(models.Model):
pass
class Recipe(models.Model):
ingredients = models.ManyToManyField(RecipeJoin,through='Ingredient')
class Ingredient(models.Model):
name = models.TextField()
test = models.ForeignKey(RecipeJoin,null=True,blank=True,editable=False)
新的管理:
class IngredientInline(admin.TabularInline):
model = Recipe.ingredients.through
class RecipeOptions(admin.ModelAdmin):
inlines = [IngredientInline,]
admin.site.register(Recipe,RecipeOptions)
显然,这不是一个黑客,我想用。任何人都知道如何通过内联表单来显示多种关系的方式,而不需要(a)创建全新的BasicInline表单和模板,或者(b)通过中介(或通用管理员)模型进行创建。
TIA。 (我为详细道歉,这是我的第一篇文章,所以想彻底)。
是的,我最终决定解决一个ForeignKey,但我实际上正在寻找一个内联的表单,可以与一个ManyToMany字段一起工作,因为django 1.2文档似乎说...尽管如此,这两个工作,谢谢! – Katharine 2010-07-06 02:29:14