Je cherchais un moyen de permettre à l'utilisateur de changer facilement l'ordre des entrées dans un formset. J'ai trouvé a StackOverflow question qui aborde ce sujet, avec la réponse acceptée référençant un Django Snippet qui utilise un outil JQuery pour permettre le glisser-déposer des entrées. C'est génial et cool, mais j'ai un problème avec les entrées 'supplémentaires'. Si une entrée « extra » est modifiée puis traîné je reçois une erreur sur le soumettre:Glisser-déposer du formset avec des entrées supplémentaires
(1048, "Column 'order' cannot be null")
je crois que Django conserve les entrées supplémentaires « » séparer, car ils doivent être insérés à la place des mises à jour. Donc, le réarrangement confonde probablement les choses. Existe-t-il un moyen de faire fonctionner ce système ou existe-t-il d'autres suggestions pour réorganiser et/ou ajouter de nouvelles entrées?
Modifier: Ajout de quelques extraits de code pertinents. J'essaie cela dans l'admin, comme le montre l'extrait. Je voudrais le mettre dans ma propre page en fin de compte, cependant.
models.py:
class Section(models.Model):
section_id = models.AutoField(primary_key=True)
section_name = models.CharField(max_length=135)
score_order = models.IntegerField()
def __unicode__(self):
return self.section_name
class Meta:
db_table = u'section'
ordering = [u"score_order"]
class Chair(models.Model):
chair_id = models.AutoField(primary_key=True)
member = models.ForeignKey(Member, null=True, blank=True,
limit_choices_to={'current_member': True})
section = models.ForeignKey(Section)
description = models.CharField(max_length=135)
order = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return "%s - %s" % (self.description, self.member)
class Meta:
db_table = u'chair'
ordering = (u'section', u'order')
admin.py
class SectionForm(forms.ModelForm):
model = Section
class Media:
js = (
'/scripts/jquery.js',
'/scripts/ui.core.js',
'/scripts/ui.sortable.js',
'/scripts/section-sort.js',
)
class ChairInline(admin.StackedInline):
model = Chair
admin.site.register(Section,
inlines = [ChairInline],
form = SectionForm,
)
Pourriez-vous poster votre modèle et n'importe quel code de formulaire personnalisé pour donner un meilleur contexte? –
En outre, tous les JS pertinents qui ne figurent pas dans les extraits liés. –