我希望使用Django-autocomplete-light ModelSelect2Multiple
通过模型数据更新多对多,但在使用get_initial()
将数据发送到表单时,数据不按发送数据的顺序显示;它将显示在数据库注册顺序中。
如何通过模型以排序顺序在ModelSelect2Multiple
中显示数据?
ModelSelect2Multiple
在注册新数据时效果很好。
这是我的model.py
class Writer(models.Model):
name = models.CharField()
class Event(models.Model):
name = models.CharField()
writer = models.ManyToManyField(Writer, through="Attend", related_name='attends')
class Attend(models.Model):
event = models.ForeignKey(Event)
writer = models.ForeignKey(Writer)
number = models.PositiveSmallIntegerField(default=0)
这是我的preview.py
class EventUpdateFormPreview(FormPreview):
form_template = "app/event_update.html"
preview_template = "app/event_update_preview.html"
def get_initial(self, request):
event = Event.objects.get(id=self.state["event_id"])
return {
'name': event.name,
'writer': [x.pk for x in event.writer.all().order_by('attend__number')],
}
这是我的forms.py
class EventUpdateForm(forms.ModelForm):
name = forms.CharField(label='event name')
writer = forms.ModelMultipleChoiceField(
label='Attends',
queryset=Writer.objects.all(),
widget=autocomplete.ModelSelect2Multiple(
url='app:writer_autocomplete',
)
)
数据库中的注册顺序
注册活动中与会者的顺序(初次注册时会成功)
更新视图上显示的订单
环境:
Django的== 1.11.6
Django的自动填充光== 3.2.10
请原谅我的英语不好,非常感谢你。