#python #django
#python #django
Вопрос:
В моей модели у меня есть:
flowcell = models.ForeignKey("FlowCell", on_delete=models.PROTECT)
lanes = models.ManyToManyField("main.FlowCellLane", related_name='demuxers', blank=True)
в моей форме я хочу, чтобы они могли выбираться на основе доступных FlowCellLanes. Итак, я подключаю ячейку потока к переменной и использую ее, чтобы увидеть, какие «дорожки» есть:
class DemuxerForm(forms.ModelForm):
class Meta:
model = Demuxer
exclude = ["owner", "pid", "flowcell"]
lanes = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)
def __init__(self, *args, **kwargs):
self.flowcell = kwargs.pop('flowcell')
super().__init__(*args, **kwargs)
self.fields['lanes'].choices = sorted([(lane.pk, str(lane.lane_number))
for lane in self.flowcell.lanes.all()])
Теперь я хотел бы установить все доступные флажки. Но я не знаю, как я мог это сделать. В том месте, где может быть initial =, ‘self’, конечно, недоступен… есть идеи?
Ответ №1:
Я понял это:
choices = self.flowcell.lanes.values_list("pk", lane_number").order_by("lane_number")
self.fields['lanes'].choices = choices
self.fields["lanes"].initial = [pk for pk, _ in choices]