dans mes modèles.py j'ai quelque chose comme: admin.py (standard): p> Quand j'entre dans le Page d'administration pour le rapport, il montre un beau champ de choix multiple. Comment puis-je ajouter le même champ de choix multiple dans l'emplacementGroup? Je peux accéder à tous les rapports en appelant emplacementgroup.report_set.all.all () p> p>
3 Réponses :
Je pense que Yon peut combiner cet exemple de code ( source ) qui casse Sync_db avec Cet extrait p> Pour obtenir quelque chose comme P> class ItemType(meta.Model):
name = meta.CharField(maxlength=100)
description = meta.CharField(maxlength=250)
properties = meta.ManyToManyField_NoSyncdb('PropertyType',
db_table='app_propertytype_itemtypes')
class PropertyType(meta.Model):
name = meta.CharField(maxlength=100)
itemtypes = meta.ManyToManyField(ItemType)
Je pense que vous recherchez est admin Inlines . Dans votre administrateur.py Vous voudrez ajouter quelque chose comme ceci:
class MyLocationGroupForm(forms.Form):
location = forms.MultipleModelChoiceField(
queryset=LocationGroup.objects.all())
class LocationGroupInline(admin.TabularInline):
model = LocationGroup
form = MyLocationGroupForm
Signaler admin aura des groupes de localisation par défaut, la question était de savoir comment faire l'inverse. Quoi qu'il en soit, cela constituera une exception selon laquelle EmplacementGroup n'a pas de fourchette à destination de Reportadmin.
La solution que j'ai trouvée était de suivre les instructions de PLUSTOMANYFields avec des modèles intermédiaires . Même si vous n'utilisez pas la fonctionnalité de modèle 'à travers', faites semblant de créer un modèle de stub avec la nécessaire fourrure nécessaire.
# models: make sure the naming convention matches what ManyToManyField would create
class Report_LocationGroups(models.Model):
locationgroup = models.ForeignKey(LocationGroup)
report = models.ForeignKey(Report)
# admin
class ReportInline(admin.TabularInline):
model = models.Report_LocationGroups
class LocationGroupAdmin(admin.ModelAdmin):
inlines = ReportInline,
Plus facile, mais toujours un hack. Je souhaite que Django puisse supporter cela est de manière plus élégante.
Ticket associé: code.djangoproject.com/ticket/897