2016-03-18 11 views
0

Ich habe diese Modelle:Kann ich ein Inline-Formularsatz ohne Daten in einer Aktualisierungsansicht rendern?

class Picture(models.Model): 
    image = models.ImageField(upload_to='media') 
    show_name = models.CharField(max_length=128) 
    file_name = models.CharField(max_length=128) 

class PicturePrice(models.Model): 
    picture = models.ForeignKey(Picture) 
    price = models.PositiveSmallIntegerField() 
    date = models.DateTimeField(auto_now_add=True) 

Mit diesen Modellen, ich versuche jedes Mal zu wissen, dass ein Bild einen neuen Preis hat, und das Datum, an jedem Preis hinzugefügt wurde. Etwas wie dieses:

Pictures: 1, 2, 3 

Picture 1: 
Price 5$ 3/16/2016 
Price 3$ 3/18/2016 

Picture 2: 
Price 3$ 3/16/2016 

Picture 3: 
Price 5$ 3/16/2016 
Price 3$ 3/17/2016 
Price 4$ 3/18/2016 

So weiß ich, was der aktualisierte Preis ist und was die letzten Preise gewesen sind.

Ich habe diese Inline-formset für den Preis:

price_formset=inlineformset_factory(
    Picture, 
    PicturePrice, 
    extra=0, 
    min_num=1, 
    can_delete=True, 
    widgets={ 
    'price' : forms.TextInput(attrs={ 
     'class':'form-control price_per_pic', 
     'maxlength' : 5 
    })} 
) 

Dies funktioniert gut, wenn ich es in der Ansicht nennen, aber wenn ich versuche, einen neuen Preis hinzufügen, zeigt es eine Textbox mit dem vorherigen Preis, um es zu bearbeiten. Ich möchte den Preis nicht bearbeiten, ich möchte nur ein neues Register zur Datenbank hinzufügen.

Jede Hilfe wäre willkommen.

Dank

Antwort

0

Versuchen Sie, den extra Wert in Ihrem price-formset ändert, dass sie größer als 0 (die Anzahl der leeren Formen Sie möchten). Also, wenn Sie 1 leeres Formular möchten:

price_formset_inlineformset_factory(
    ... 
    extra=1, 
    ... 
)