我希望能够通过Django Admin网站在我的数据库中创建鸡尾酒。为此,我有一个鸡尾酒'模型和成分'模型。他们需要一个ManyToMany关系,允许额外的字段' amount_in_oz',所以我使用了一个' IngredientAmount'带有'到'的中间模型。在管理网站中,当我点击“添加鸡尾酒”时,我希望能够为鸡尾酒命名,然后添加来自“成分”的几个项目。同时还指定了' amount_in_oz'为每个人。
SELECT b.`date`,max(a.`num`*b.`val`) AS `total`
FROM test a
LEFT JOIN `test2` b
ON b.`date` >= a.`date`
WHERE b.date is not null
GROUP BY b.`dates`;
似乎因为中间表需要额外的输入,所以filter_horizontal小部件无法处理它。
我想知道实现这一目标的最佳方法是创建自定义表单还是自定义验证? https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form
或者使用formfield_overides? https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overrides
或者为ModelAdmin创建一个新的小部件,例如' filter_horizontal',但是在中间有一个文本框来输入值?
答案 0 :(得分:0)
您可以使用联接表并进行内联:
https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#inlinemodeladmin-objects
from django.contrib import admin
class IngredientAmountInline(admin.StackedInline):
model = IngredientAmount
class CocktailAdmin(admin.ModelAdmin):
inlines = [
IngredientAmountInline,
]