Vous n'êtes pas identifié(e).
Hello,
un peu du mal à trouver un titre explicite. Mais mon exemple est très simple. J'ai une classe Personnage qui dispose d'un Inventaire. Cet Inventaire peut-être rempli avec des Objets. J'ai donc une classe Objet (que j'ai voulu faire abstraite du coup) et à partir de cette classe mère j'ai créé une classe pour chaque type d'Objet. Je veux évidemment pouvoir mettre n'importe quel Objet dans l'inventaire.
from django.db import models
from actions.models import Action
class Type(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
class Quality(models.Model):
name = models.CharField(max_length=200)
level = models.IntegerField()
def __unicode__(self):
return self.name
class Meta:
verbose_name_plural = "qualities"
class Item(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=200)
type = models.ForeignKey(Type)
actions = models.ManyToManyField(Action,blank=True)
def __unicode__(self):
return self.name
class Meta:
abstract = True
class Food(Item):
ap = models.IntegerField()
class Tool(Item):
durability = models.IntegerField()
class Ore(Item):
quality = models.ForeignKey(Quality)
class Crystal(Item):
quality = models.ForeignKey(Quality)
class Container(Item):
capacity = models.IntegerField()
class Specimen(Item):
family = models.CharField(max_length=200)
class Plant(Item):
family = models.CharField(max_length=200)
class Weapon(Item):
min_damage = models.IntegerField()
max_damage = models.IntegerField()
J'imagine que mon idée est assez compréhensible, mais je ne sais pas du tout comment faire du coup, car c'est impossible avec une classe abstraite, ma classe Inventaire qui a un attribut ManyToManyField vers Item me donne une erreur.
Dernière modification par kyrillos (29-09-2011 21:21:21)
Hors ligne
Hors ligne
Ok, mais du coup, je ne peux pas empecher la création d'objet de la classe Item ?
Hors ligne
Bonsoir,
Il fautr chercher du côté des GenericForeignKey. La doc est pas trés
explicite sur le sujet, je n'ai pas encore trouvé comment faire, mais je
suis interressé par le sujet (je veux enregistrer des transactions portant
sur différents types d'objets, en joignant une information de type dans la
autre champs pour retrouver mes objets de transactions)
Bonne soirée !
François
Le 30 septembre 2011 10:24, kyrillos <siriru _AT_ gmail.com> a écrit :
> Ok, mais du coup, je ne peux pas empecher la création d'objet de la classe
> Item ?
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
frague
Hors ligne