11
votes

Comment ajouter BI-Dityal BalityTomanfields dans Django Admin?

dans mes modèles.py j'ai quelque chose comme: xxx

admin.py (standard): xxx

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 ()


1 commentaires

3 Réponses :


2
votes

Je pense que Yon peut combiner cet exemple de code ( source ) qui casse Sync_db Xxx pré>

avec Cet extrait p> xxx PRE>

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)


0 commentaires

1
votes

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


1 commentaires

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.



8
votes

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,


1 commentaires

Plus facile, mais toujours un hack. Je souhaite que Django puisse supporter cela est de manière plus élégante.