Compte tenu des modèles suivants:Django ManyToMany relation avec base abstraite - pas possible, mais y at-il un meilleur moyen?
class BaseMachine(models.Model)
fqdn = models.CharField(max_length=150)
cpus = models.IntegerField()
memory = models.IntegerField()
class Meta:
abstract = True
class PhysicalMachine(BaseMachine)
location = models.CharField(max_length=150)
class VirtualMachine(BaseMachine)
hypervisor = models.CharField(max_length=5)
class Sysadmin(models.Model):
name = models.CharField(max_length=100)
admin_of = models.ManyToManyField...
Dans cet exemple, je voudrais vous raconter 1 sysadmin à de nombreuses machines - être les soit une instance ou PhysicalMachine ou VirtualMachine. Je sais que je ne peux pas avoir un ManyToMany avec une base abstraite, mais je me demandais s'il y avait une meilleure façon d'y parvenir que de simplement avoir un champ ManyToMany séparé sur sysadmin pour chacun des modèles? Dans ce petit exemple qui pourrait être tolérable, mais si vous avez plus de 2 sous-classes, ou s'il y a d'autres modèles que vous devez mettre en relation avec la classe 'base', cela devient quelque chose de plus à gérer.
Merci :)
Mais pourrais-je attacher beaucoup * à 1 instance sysadmin de la machine? A l'aide de ContentType, je devrais créer plusieurs instances sysadmin pour chaque * machine? – Darren
J'ai mis à jour la solution, donc un administrateur peut avoir plusieurs machines et une machine peut avoir de nombreux administrateurs. –
Inverser la relation fonctionnera pour mon cas d'utilisation, merci les gars. – Darren