2009-07-29 8 views
-2

Bonjour, j'ai ces 2 modèles:django un à plusieurs question au panneau d'administration

from django.db import models 

class Office(models.Model): 
    name = models.CharField(max_length=30) 
    person = models.CharField(max_length=30) 
    phone = models.CharField(max_length=20) 
    fax = models.CharField(max_length=20) 
    address = models.CharField(max_length=100) 
    def __unicode__(self): 
      return self.name 



class Province(models.Model): 
    numberPlate = models.IntegerField(primary_key=True) 
     name = models.CharField(max_length=20) 
    content = models.TextField() 
    office = models.ForeignKey(Office) 
    def __unicode__(self): 
      return self.name 

Je veux être en mesure de choisir plusieurs bureaux pour les provinces, ce qui est un modèle pour beaucoup. Voici mon admin.py:

from harita.haritaapp.models import Province, Office 
from django.contrib import admin 


class ProvinceCreator(admin.ModelAdmin): 
     list_display = ['name', 'numberPlate','content','office'] 

class OfficeCreator(admin.ModelAdmin): 
     list_display = ['name','person','phone','fax','address'] 


admin.site.register(Province, ProvinceCreator) 
admin.site.register(Office, OfficeCreator) 

En ce moment, je suis en mesure de sélectionner un bureau par province sur le panneau d'administration, tout en créant une nouvelle province, mais je veux être en mesure de sélectionner plus d'un. Comment puis-je atteindre cet objectif?

Cordialement

Répondre

2

Je ne sais pas si je vous l'incompréhension, mais vos modèles dire actuellement « un bureau peut être associé à de nombreuses provinces, mais chaque province ne peut avoir qu'un seul bureau ». Cela contredit ce que vous voulez. Utilisez un champ ManyToMany à la place:

class Province(models.Model): 
    numberPlate = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=20) 
    content = models.TextField() 
    office = models.ManyToManyField(Office) 
    def __unicode__(self): 
     return self.name 
+0

merci, travaille maintenant comme un charme! Je suppose que j'ai mal compris le sens de un à plusieurs à django. Juste un petit mot pour les futurs téléspectateurs, je devais aussi changer la ProvinceCreator comme list_display ne permet pas ManyToManyFields: classe ProvinceCreator (admin.ModelAdmin): fieldsets = ( (None, { 'champs': (» nom ',' numberPlate ',' contenu ',' bureau ') }), ) À la votre! –

+1

En outre, la convention est d'utiliser des noms pluralisés pour les champs M2M. Désolé que mon exemple ne le transmette pas (putain c & p!). De plus, vous n'avez pas besoin de définir des fieldsets si vous affichez tous les champs (à moins que vous ne souhaitiez explicitement les réorganiser, ce que vous semblez faire maintenant). Bonne chance, compatriote djangonaut! – Cide

Questions connexes