J'ai deux modèles:forme Django reliant 2 modèles par beaucoup de nombreux champs
class Actor(models.Model):
name = models.CharField(max_length=30, unique = True)
event = models.ManyToManyField(Event, blank=True, null=True)
class Event(models.Model):
name = models.CharField(max_length=30, unique = True)
long_description = models.TextField(blank=True, null=True)
Je veux créer une forme qui me permet d'identifier le lien entre les deux modèles quand j'ajoute une nouvelle entrée. Cela fonctionne:
class ActorForm(forms.ModelForm):
class Meta:
model = Actor
Le formulaire comprend le nom et l'événement, me permettant de créer un nouvel acteur et un lien simultané à un événement existant.
Sur l'autre face,
class EventForm(forms.ModelForm):
class Meta:
model = Event
Ce formulaire ne comprend pas une association d'acteurs. Donc, je suis seulement capable de créer un nouvel événement. Je ne peux pas le lier simultanément à un acteur existant.
J'ai essayé de créer un formset en ligne:
EventFormSet = forms.models.inlineformset_factory(Event,
Actor,
can_delete = False,
extra = 2,
form = ActorForm)
mais je reçois une erreur
<'class ctg.dtb.models.Actor'> has no ForeignKey to <'class ctg.dtb.models.Event'>
Ce n'est pas trop surprenant. Le jeu en ligne a fonctionné pour un autre ensemble de modèles que j'avais, mais c'est un exemple différent. Je pense que je vais tout à fait faux.
Question générale: Comment puis-je créer un formulaire qui me permet de créer un nouvel événement et le lier à un acteur existant?
Combien de «Acteurs» sont impliqués dans un 'Event'? De mon sentiment, je créerais une clé étrangère de 'Event' à' Actor' en premier lieu. –
Je comprends votre point de vue, mais je pense que Many to Many est correct. Plus d'un acteur peut assister à un événement, et un acteur peut assister à plusieurs événements. –