Можно ли это сделать с помощью Django Admin?
У меня есть модель ингредиентов, которая отображает параметры "порция и вес" для каждого ингредиента в админке
Админ ингредиентов "встроен" в MealAdmin. Я пытаюсь также показать опции "порция и вес" для каждого ингредиента. Можно ли это сделать в админке?
models.py
class Meal(models.Model):
meal_name = models.CharField(max_length=200, blank=False)
meal_image_url = models.CharField(max_length=200, default="")
ingredient = models.ForeignKey(Ingredient, on_delete=DO_NOTHING, related_name="mealingredient")
def __str__(self):
return f'{self.meal_name}'
class Ingredient(models.Model):
food_code = models.IntegerField(default=0)
language = models.CharField(max_length=2, choices=LANGUAGE_CHOICES, default='en')
water_g = models.DecimalField(decimal_places=3, max_digits=10, default=0)
modifier = models.ManyToManyField(IngredientFoodPortion)
class Meta:
ordering = ['item_description']
def __str__(self):
return f'{self.item_description}'
objects = models.Manager()
И admin.py
я пытался получить ingredient_id, чтобы использовать его для фильтрации в обоих классах Admin, но он всегда возвращается пустым в обоих:
class IngredientAdmin(admin.ModelAdmin):
my_id_for_formfield = None
def get_form(self, request, obj=None, **kwargs):
if obj:
self.my_id_for_formfield = obj.food_code
return super(IngredientAdmin, self).get_form(request, obj, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "serving":
kwargs["queryset"] = IngredientFoodPortion.objects.filter(food_code=self.my_id_for_formfield).distinct()
return super(IngredientAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
admin.site.register(Ingredient, IngredientAdmin)
class MealAdmin(admin.ModelAdmin):
my_id_for_formfield = None
def get_form(self, request, obj=None, **kwargs):
if obj:
self.my_id_for_formfield = obj.food_code
return super(MealAdmin, self).get_form(request, obj, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "serving":
kwargs["queryset"] = IngredientFoodPortion.objects.filter(food_code=self.my_id_for_formfield)
return super(MealAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
admin.site.register(Meal, MealAdmin)
Заранее спасибо...