2017-03-23 5 views
0

Hey j'espère que quelqu'un sera en mesure de m'aider.Django Connexion Image avec le nom du produit de l'administrateur

Je travaille sur un site de commerce électronique, je peux ajouter chaque produit de l'Admin db à travers django mais je ne peux pas ajouter l'image, actuellement le code ajoute la même image à chaque produit.

{% for Product in oldProducts %} 
    <div class="col-lg-4"> 
     <img class="img-circle" src="{% static "ecommerce/img/weightgain2.png" %}" alt="Generic placeholder image" width="140" height="140"> 
     <h2>{{ Product.Name }}</h2> 
     <p>{{ Product.Price }} </br> {{ Product.Description }}</p> 
     <form method='POST' action="{% url 'ecommerce:addbasket' %}"> 
     {% csrf_token %} 
     <input type="hidden" name="stuffNum" value="{{ Product.ProductID }}"> 
     <input type="hidden" name="stuffName" value="{{ Product.Name }}"> 
     <input type="hidden" name="stuffPri" value="{{ Product.Price }}"> 
     <input type="hidden" name="stuffDesc" value="{{ Product.Description }}"> 
     <button class="btn btn-default" type="submit">Add To Basket</button> 
     </form> 
    </div><!-- /.col-lg-4 --> 
    {% endfor %} 

Comment puis-je faire en sorte que chaque produit prenne une image différente portant le même nom que le produit?

class Product(models.Model): 
ProductID = models.AutoField(db_column='ProductId', primary_key=True) # Field name made lowercase. 
Name = models.CharField(db_column='Name', max_length=255, blank=True, null=True) # Field name made lowercase. 
Price = models.TextField(db_column='Price', blank=True, null=True) # Field name made lowercase. This field type is a guess. 
Description = models.TextField(db_column='Description', blank=True, null=True) # Field name made lowercase. 
Image = models.TextField(db_column='Image', blank=True, null=True) # Field name made lowercase. 
+0

Montrez vos modèles s'il vous plaît –

+0

thats les modèles pour le produit – Daniiii

Répondre

0

Vous utilisez un Textfield au lieu d'une ImageField qui est la raison pour laquelle vous ne pouvez pas choisir une image à télécharger.

Meilleur changement à ceci:

class Product(models.Model): 
    ProductID = models.AutoField(db_column='ProductId', primary_key=True) 
    Name = models.CharField(db_column='Name', max_length=255, blank=True, null=True) 
    Price = models.TextField(db_column='Price', blank=True, null=True) 
    Description = models.TextField(db_column='Description', blank=True, null=True) 
    Image = models.ImageField(upload_to='path/to/dir/for/images/', db_column='Image', blank=True, null=True) 

Puis dans votre code HTML écrire comme ceci:

{% for Product in oldProducts %} 
    <div class="col-lg-4"> 
     <img class="img-circle" src={{ Product.Image.url }} alt="Generic placeholder image" width="140" height="140"> 
     ... 
    </div> 
{% endfor %} 

[NOTES PYTHON]: S'il vous plaît utiliser product_id au lieu de ProductID etc. Cas d'utilisation de serpent convention. Ceci est Python, pas JS;)

En savoir plus sur le ImageField ou rechercher Google pour plus.

+0

Eh bien, j'ai pensé à travailler maintenant de cette façon. Mais 1: Que se passe-t-il lorsque je télécharge les fichiers sur un serveur puisque les images ne sont pas stockées dans la base de données. – Daniiii

+0

Et 2: L'attribut 'Image' n'a aucun fichier associé. cette erreur apparaît – Daniiii

+0

Eh bien, ils sont stockés dans le serveur. Tu ne veux pas ça? Ce n'est pas une bonne pratique de stocker des données d'image dans la base de données. La seule chose qui sera stockée dans la base de données sera le chemin. –