2009-09-09 4 views
0
class LineItemInline(admin.TabularInline): 
    model = LineItem 
    extra = 10 

class InvoiceAdmin(admin.ModelAdmin): 
    model = Invoice 
    inlines = (LineItemInline,) 

etComment obtenir Django admin.TabularInline pour ne pas nécessiter certains articles

class LineItem(models.Model): 
    invoice = models.ForeignKey(Invoice) 
    item_product_code = models.CharField(max_length=32) 
    item_description = models.CharField(max_length=64) 
    item_commodity_code = models.ForeignKey(CommodityCode) 
    item_unit_cost = models.IntegerField() 
    item_unit_of_measure = models.ForeignKey(UnitOfMeasure, default=0) 
    item_quantity = models.IntegerField() 
    item_total_cost = models.IntegerField() 
    item_vat_amount = models.IntegerField(default=0) 
    item_vat_rate = models.IntegerField(default=0) 

Quand je l'ai telle configuration, l'interface admin me oblige à ajouter des données à tous les dix LineItems. Les LineItems ont des champs obligatoires, mais je m'attendais à ce qu'il ne nécessite pas d'éléments de ligne entiers s'il n'y avait pas de données saisies.

Répondre

1

C'est étrange, c'est supposé ne pas le faire - il ne devrait pas nécessiter de données à la suite si vous n'avez rien saisi.

Je me demande si les options default le rendent confus. Encore une fois, Django devrait faire face à cela, mais essayez de les supprimer et voyez ce qui se passe.

Notez également que ceci:

item_unit_of_measure = models.ForeignKey(UnitOfMeasure, default=0) 

est pas valable, puisque 0 ne peut pas être l'ID d'un objet UnitOfMeasure. Si vous ne souhaitez pas utiliser de clés FK, utilisez null=True, blank=True dans la déclaration de zone.

0

Il s'avère que le problème provient de valeurs par défaut. Celui indiqué ci-dessus à propos de UnitOfMeasure n'est pas le problème réel, cependant, n'importe quel champ avec un défaut = l'oblige à exiger que le reste des données soit présent. Cela me semble être un bogue car une valeur par défaut doit être soustraite lors de la détermination de tout élément de l'enregistrement qui doit être sauvegardé, mais lorsque je supprime toutes les valeurs par défaut, cela fonctionne.

Dans ce code, item_unit_of_measure = models.ForeignKey (UnitOfMeasure, par défaut = 0) c'était une façon sournoise de laisser l'entrée 0e dans la base de données la valeur par défaut. Cela ne fonctionne malheureusement pas comme il l'a souligné cependant.

+0

Odd. Utilisez-vous une ancienne version de Django? Ce bug a été corrigé il y a environ un an (http://code.djangoproject.com/ticket/7975), et des tests ont été inclus dans le correctif, donc je serais surpris s'il régressait. –

Questions connexes