2016-05-20 10 views
1

Ich habe ein Modell ZauberIch kann nicht django Fieldset arbeiten rechts

class Spell(models.Model): 
    name = models.CharField(max_length=255, unique=True) 
    spell_type = models.CharField(max_length=1, choices=CHOICES) 
    spell_level = models.IntegerField() 
    casting_time = models.CharField(max_length=255) 
    casting_range = models.CharField(max_length=255) 
    verbal = models.BooleanField(default=True) 
    somatic = models.BooleanField(default=False) 
    material = models.CharField(max_length=255, blank=True, null=True) 
    duration = models.CharField(max_length=255) 
    classes = models.ManyToManyField('PlayerClass', related_name='spells', blank=True) 
    description = HTMLField() 

und ich habe setzen diese Admin-Klasse in meinem admin.py

class SpellAdmin(admin.ModelAdmin): 
    fields = ('name', 'spell_type', 'casting_time', 'casting_range', 
      ('verbal', 'somatic', 'material'), 
      'duration', 'classes', 'description') 

Aber verbal, somatische und Material erhalten Zeige nicht in derselben Zeile im Admin-Formular. Soweit ich sagen kann, habe ich alles like the docs say eingerichtet. Ich benutze Django 1.9.6. Hat jemand eine Idee was ich falsch gemacht oder weggelassen habe?

Antwort

1

Ich habe Ihren Code in ein Django 1.9.6 Projekt kopiert und eingefügt und es funktioniert genau so, wie es in der Dokumentation heißt. Die drei Felder verbal, somatic und material erscheinen in derselben Zeile.

Django macht die Linie durch einen div mit class="form-row field-verbal field-somatic field-material" Zugabe und innerhalb drei div s mit class="field-box field-verbal". Es sieht wie folgt aus:

<div class="form-row field-verbal field-somatic field-material"> 
    <div class="field-box field-verbal"> 
     <input checked="checked" id="id_verbal" name="verbal" type="checkbox"><label class="vCheckboxLabel" for="id_verbal">Verbal</label> 
    </div> 
    <div class="field-box field-somatic"> 
      <input id="id_somatic" name="somatic" type="checkbox"><label class="vCheckboxLabel inline" for="id_somatic">Somatic</label> 
    </div> 
    <div class="field-box field-material"> 
      <label class="inline" for="id_material">Material:</label> 
      <input class="vTextField" id="id_material" maxlength="255" name="material" type="text"> 
    </div> 
</div> 

, die für das richtige Verhalten macht, auch wenn ich die Browser-Fenster zu reduzieren.

Ich vermute, dass Sie in Ihrem admin.py

admin.site.register(models.Spell) 

statt

admin.site.register(models.Spell, SpellAdmin) 

Und Ihre ModelAdmin hinzugefügt wurde gepflückt nie von Django auf, und daher nie verwendet, für das Rendern.

+0

Das war es, das war das erste Mal, dass ich Admin-Klassen benutzte, ich dachte nicht einmal daran, es zu registrieren. – Azure