J'ai fait un certain nombre de recherches ici et lu la documentation de ManyToMany pour Django et pense que ce type de modèle correspond à mes besoins. Cependant, étant donné la façon dont ce champ apparaît sur la page d'administration, je crains d'avoir trop de données pour ce type pour fonctionner correctement pour mon but.Django Many to Many Fields - OK avec des jeux de données volumineux?
J'ai deux modèles, Image et Post. Je veux configurer mes modèles de telle sorte qu'une image puisse être associée à un certain nombre de messages et inversement. Mon souci est qu'avec des dizaines/centaines de milliers de messages et d'images, la page d'administration sera ingérable et prendra trop de temps à charger.
Voici ce que j'ai maintenant:
class Image(models.Model):
post = models.ManyToManyField(Post)
image = models.ImageField(upload_to=f, blank=True)
class Post(models.Model):
post_title = models.CharField(max_length=113)
text = models.CharField(max_length=1500)
pub_date = models.DateTimeField('post date')
image = models.ManyToManyField(Image)
Y at-il une meilleure façon de gérer cette situation? J'ai pensé à créer une table de base de données séparée avec des clés étrangères pour Image et Post. Chaque association entre une publication et une image aurait une entrée dans cette table. Cela fonctionnerait-il?
Merci. Je suis d'accord que je devrais enlever le M2M sur l'un des modèles. En ce qui concerne l'autre question, est-ce une mauvaise forme de Django d'avoir une table séparée qui stocke toutes les relations entre Post et Image? C'est la direction dans laquelle je me penche, mais je n'ai pas assez d'expérience pour savoir si cela va causer des problèmes sur la route. Selon votre réponse, il semble que ce soit une solution acceptable. Chaque poste aura sa propre page et je ferai une recherche pour les images correspondantes pour ce poste. –
Le django m2m créera cette table pour vous. Aussi, en ajoutant une image à une instance de Post, vous pouvez facilement interroger les images liées en faisant: post_instance.images.all(). Jetez un coup d'œil sur les nombreux exemples de Django: https://docs.djangoproject.com/fr/1.7/topics/db/examples/many_to_many/ – MadMan2064