0
votes

Django: même modèle avec différentes caractéristiques?

Modèle d'objet:

class Category(models.Model):
    title = models.CharField(max_length=50)

    def __str__(self):
        return f"{self.title}"


1 commentaires

Je suggérerais de lire cet article! Cela pourrait vous donner une bonne inspiration pour votre cas d'utilisation! https://realpython.com/modeling-polymorphism-django-python/


3 Réponses :


1
votes

Vous pouvez utiliser Héritage multi-table

Vous définissez Un objet de base, et de là, vous pouvez définir différents objets enfant qui partageront les propriétés des parents p>

dans votre cas qui ressemblerait à ceci: P>

class Object(models.Model):
    ...


class Restaurant(Object):
   seats = IntegerField(...)
   reservations = ManyToManyField(...)

class Hotel(Object):
   rooms = IntegerField(...)
   has_pool = BooleanField(...)


4 commentaires

Hmm, a l'air très agréable, mais en ce moment, je ne peux pas vérifier cette solution, alors ne peut toujours pas accepter cette réponse, mais vous avez mon uppote pour le moment :)


Ok, ça marche bien. Une autre question, maintenant cela fonctionne avec une liste déroulante (choisissez la catégorie, envoyer AJAX à Views.py et dépend de param (catégorie) Afficher un formulaire différent pour chaque catégorie via un étui de commutation (si l'instruction de Python) est une façon plus intelligente de montrer différentes formes ?


Peut-être ajouter un champ form_class aux différents modèles? Ensuite, vous pouvez simplement appeler le formulaire de l'objet, quelque chose comme form_class = restaurantform


Oui, mais alors chaque restaurant l'aura, il y aura une répétition. De plus, si je veux l'automatiser (si je crée des liens pour chaque catégorie, comme maintenant et appelez des objets pour chaque catégorie, je devrais maintenant utiliser si la déclaration)? Le problème majeur est que je ne peux pas séparer différentes catégories maintenant (car ils n'ont pas unique, comme catégorie_id ou autre chose)




1
votes

Je vais expliquer celui-ci par un:

 schéma

  • catégorie La table contient toutes les catégories.
  • Il peut exister une fonctionnalité commune et unique pour chaque catégorie. Caractéristiques aura Beaucoup de relations avec catégorie Tableau.
    Nous créons donc une table Feature_MASTER et nous le ferons mapper avec la table de catégories.
  • Feature_Master La table contient toutes les fonctionnalités.
  • catégorie_feature_map La table est la table de la carte (table de jonction)
  • Object TABLE portez tous les détails sur l'objet et objet_detail Table contiendra la totalité de la fonctionnalité à un objet particulier

2 commentaires

Merci de cette réponse, mais de Django Development View, je pense que les solutions ci-dessus sont meilleures :)


DB devrait être indépendant de O.R.M. toujours. Donc, si dans le temps, nous voulons changer le cadre, nous n'aurons pas à vous soucier de la base de données. DB devrait être indépendant de l'ormes toujours