Я недавно обновился до 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)
То, что я получил, было в той же форме, которую вы обычно виделиПоле ManyToMany, с некоторыми дополнительными строками.Предоставление дополнительных параметров, таких как 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)
Очевидно, что это не хак, я бы хотелиспользовать.Кто-нибудь знает способ заставить многие отношения отображаться через встроенную форму без (а) создания совершенно новой формы и шаблона BasicInline или (б) применения ее через посредническую (или общую администраторскую) модель?
ТИА.(Я прошу прощения за многословие, это мой первый пост, поэтому хотел быть тщательным).