Initial Data for Django Inline Formsets

Ich habe ein Formular zusammengestellt, um ein Rezept zu speichern. Es verwendet ein Formular und ein Inline-Formset. Ich habe Benutzer mit Textdateien, die Rezepte enthalten, und sie möchten die Daten ausschneiden und einfügen, um die Eingabe zu erleichtern. Ich habe herausgefunden, wie der Formularteil nach der Verarbeitung der Rohtexteingabe ausgefüllt wird, kann aber nicht herausfinden, wie das Inline-Formset ausgefüllt wird.

Es scheint, als ob die Lösung hier fast ausgeschrieben ist:http: //code.djangoproject.com/ticket/1221 aber ich kann die Teile nicht ganz zusammenfügen.

Meine Modelle:

#models.py

from django.db import models

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

    class Meta:
        ordering = ['title']

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return self.id

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

    class Meta:
        ordering = ['title']

    def __unicode__(self):
        return self.id

    def get_absolute_url(self):
        return "/recipes/%s/" % self.id

class UnitOfMeasure(models.Model):
    title = models.CharField(max_length=10, unique=True)

    class Meta:
        ordering = ['title']

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return self.id

class RecipeIngredient(models.Model):
    quantity = models.DecimalField(max_digits=5, decimal_places=3)
    unit_of_measure = models.ForeignKey(UnitOfMeasure)
    ingredient = models.ForeignKey(Ingredient)
    recipe = models.ForeignKey(Recipe)

    def __unicode__(self):
        return self.id

Das Rezeptformular wird mit einem ModelForm erstellt:

class AddRecipeForm(ModelForm):
    class Meta:
        model = Recipe
        extra = 0

Und der entsprechende Code in der Ansicht (Aufrufe zum Auslesen der Formulareingaben werden gelöscht):

def raw_text(request):
    if request.method == 'POST':

    ...    

        form_data = {'title': title,
                    'description': description,
                    'directions': directions,
                    }

        form = AddRecipeForm(form_data)

        #the count variable represents the number of RecipeIngredients
        FormSet = inlineformset_factory(Recipe, RecipeIngredient, 
                         extra=count, can_delete=False)
        formset = FormSet()

        return render_to_response('recipes/form_recipe.html', {
                'form': form,
                'formset': formset,
                })

    else:
        pass

    return render_to_response('recipes/form_raw_text.html', {})

Wenn das FormSet () wie oben leer ist, kann ich die Seite erfolgreich starten. Ich habe ein paar Möglichkeiten ausprobiert, um das Formset mit der Menge, Maßeinheit und den Zutaten zu füttern, die ich identifiziert habe, einschließlich:

Anfangsdaten setzen, aber das funktioniert nicht bei Inline-Formsetsbergeben eines Wörterbuchs, das jedoch zu Verwaltungsformularfehlern füh herumgespielt mitdri aber ich bin da ein bisschen überfordert

Alle Vorschläge sehr geschätzt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage