Je tire mes cheveux avec ça. Lorsque j'essaie d'ajouter un 'Product' depuis ma page d'administration, j'obtiens une IntegrityError: main_product.img peut ne pas être NULL.IntegrityError: peut ne pas être NULL
Models.py
class Product(models.Model):
name = models.CharField(max_length=500)
short = models.CharField(max_length=250)
description = models.TextField()
price = models.DecimalField(max_digits=8, decimal_places=2)
in_stock = models.BooleanField()
def __unicode__(self):
return self.name
class ProductImages(models.Model):
product = models.ForeignKey(Product, blank=True)
img = models.ImageField(upload_to='images', blank=True)
caption = models.CharField(max_length=300, blank=True)
class ProductFeatures(models.Model):
product = models.ForeignKey(Product)
feature = models.CharField(max_length=500)
Admin.py
class ProductFeaturesAdmin(admin.TabularInline):
model = ProductFeatures
extra = 1
class ProductImageAdmin(admin.TabularInline):
model = ProductImages
extra = 1
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'price', 'in_stock')
inlines = [ProductFeaturesAdmin, ProductImageAdmin]
admin.site.register(Product,ProductAdmin)
j'utilisais oreiller pour redimensionner les images lors être téléchargement, donc j'avais une fonction d'enregistrement personnalisé() dans mon modèle images de produits. J'ai enlevé cela en pensant que c'était le problème, mais ça ne marche toujours pas. Comme vous pouvez le constater, je suis vraiment nouveau sur Django et Python. Toute aide a été appréciée.
Édition: j'ai oublié de mentionner que j'ai ajouté blank = true et null = true à Product.img, puis j'ai utilisé South pour migrer la table.
Éditer 2: Ceci est mon nouveau modèle ProductImages.
class ProductImages(models.Model):
product = models.ForeignKey(Product)
img = models.ImageField(upload_to='images', blank=True, null=True)
caption = models.CharField(max_length=300, blank=True)
J'utilisé du Sud et a couru:
python manage.py schemamigration main --auto
python manage.py migrate main
ayant toujours l'erreur. Si je devais ajouter le champ img à mon modèle Products, comment pourrais-je ajouter plusieurs imgs dans le panneau d'administration?
Je ne vois pas 'img' dans le modèle' Product'. – furas
Avec ProductImages lié au produit, le ProductImages.img ne deviendrait-il pas Product.img? –
img devrait être un attribut direct dans Product, sinon ce serait quelque chose comme main_productimages.img. Wild suppose que vous avez initialement img dans le modèle de produit plus tard, il a changé de modèle, mais n'a pas fait de migrations de base de données. – jtiai