Вывести правильный текст выбора для встроенного набора форм Django с двумя внешними ключами - PullRequest
0 голосов
/ 04 июля 2010

Я успешно использовал встроенные наборы форм для создания формы ввода рецепта, которая состоит из формы рецепта (просто форма модели) и набора форм RecipeIngredient.Модели:

#models.py
class Recipe(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField(blank=True)
    directions = models.TextField()

class RecipeIngredient(models.Model):
    quantity = models.DecimalField(max_digits=5, decimal_places=3)
    unit_of_measure = models.CharField(max_length=10, choices=UNIT_CHOICES)
    ingredient = models.CharField(max_length=100, choices=INGREDIENT_CHOICES)
    recipe = models.ForeignKey(Recipe)

Я хочу изменить ингредиент на следующее:

ingredient = models.ForeignKey(Ingredient)

Где ингредиент:

class Ingredient(models.Model):
    title = models.CharField(max_length=100)

Я оставил views.pyбез изменений для настройки встроенного набора форм:

FormSet = inlineformset_factory(Recipe, RecipeIngredient, extra=1,
            can_delete=False)

И все работало отлично ... пока я не щелкнул раскрывающийся список ингредиентов и не увидел ничего, кроме выбора "Объект ингредиента", повторяемого для каждой записи ингредиента, а не значения заголовкаЯ искал.

Есть ли способ сохранить этот прямой подход и отобразить Ingredient.title в выпадающих списках?Возникнут ли какие-либо другие проблемы с сохранением, отображением и т. Д.? * 10101

В противном случае, что мне нужно сделать, чтобы эта работа работала?

Спасибо всем.

1 Ответ

2 голосов
/ 04 июля 2010

Решение действительно тривиально: просто определите метод __unicode__ в модели Ingredient, чтобы получить self.title.

...