2009-07-29 4 views
-2

Grüße, ich habe diese 2 Modelle:django one to many Thema auf dem Admin-Panel

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 

Ich möchte mehrere Büros auswählen können, für die Provinzen, die eine Eins-zu viele Modell. Hier ist meine 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) 

Gerade jetzt, ich bin in der Lage ein Büro pro Provinz an dem Admin-Panel zu wählen, während eine neue Provinz zu schaffen, aber ich möchte in der Lage sein, mehr zu wählen als eines. Wie kann ich das erreichen?

Grüße

Antwort

2

Ich bin mir nicht sicher, ob ich Ihnen Missverständnis, aber Ihre Modelle sagen derzeit „ein Büro mit vielen Provinzen in Verbindung gebracht werden, aber jede Provinz kann nur ein Büro hat“. Dies widerspricht dem, was Sie wollen. Verwenden Sie stattdessen ein ManyToMany-Feld:

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

danke, jetzt funktioniert wie ein Charme! Ich vermute, ich habe die Bedeutung von eins zu vielen beim Django falsch verstanden. Nur eine kurze Notiz für zukünftige Zuschauer, ich hatte auch den ProvinceCreator zu ändern, wie list_display nicht erlaubt ManyToManyFields: Klasse ProvinceCreator (admin.ModelAdmin): Fieldset = ( (None, { 'Felder': (‘ name ',' numberPlate ',' content ',' office ') }), ) Prost! –

+1

Die Konvention besteht auch darin, pluralisierte Namen für M2M-Felder zu verwenden. Sorry, dass mein Beispiel dies nicht vermittelt (verdammt c & p!). Außerdem müssen Sie Feldgruppen nicht definieren, wenn Sie alle Felder anzeigen (es sei denn, Sie möchten sie explizit neu anordnen, was Sie jetzt anscheinend tun). Viel Glück, Kollege Djangonaut! – Cide