У меня есть форма для модели - ClinicallyReportedSample, которая ссылается на образец модели.
Я пытаюсь создать набор форм для ClinicallyReportedSample, где на основе набора запросов Sample отображается определенное количество форм, чтобы пользователь мог добавлять данные.
В настоящее время модель Sample имеет записи, но модель ClinicallyReportedSample полностью пуста:
Модель:
class Sample(models.Model):
request_number = models.PositiveIntegerField()
year = models.PositiveIntegerField()
class Meta:
db_table = "sample"
unique_together = (('request_number', 'year'),)
def __str__(self):
return("%s/%s" %(self.request_number, self.year))
class ClinicallyReportedSample(models.Model):
sample_id = models.ForeignKey(Sample,
on_delete=models.CASCADE,
db_column='sample_id')
reported = models.BooleanField(default=False)
evidence = models.TextField(null=True, blank=True)
... other fields ...
class Meta:
db_table = "clinically_reported_sample"
unique_together = (('sample_id'),)
def __str__(self):
clinically_reported_sample = str(self.sample_id)
return(clinically_reported_sample)
Мне нужны формы модели ClinicalReportedSample внутри набора форм, которые относятся к набору запросов модели образца.
Например, образцы объектов с pk 1, 2 и 3:
forms.py:
class BaseCRSFormSet(BaseModelFormSet):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# self.queryset = ClinicallyReportedVariant.objects.none()
class CRSForm(forms.ModelForm):
class Meta:
model = ClinicallyReportedSample
fields = ('sample_id', 'evidence',)
def __init__(self, *args, **kwargs):
super(CRSForm, self).__init__(*args, **kwargs)
Поэтому я пытаюсь сделать это, используя набор запросов в моем наборе форм
views.py:
def get(self, request, *args, **kwargs):
sample_obj = Sample.objects.filter(id__in=[1, 2, 3])
formset = modelformset_factory(
ClinicallyReportedSample,
form=self.crsform,
formset=BaseCRSFormSet,
extra=3,
)
formset = formset(queryset=sample_obj)
но это отображается как три формы, с объектами ALL Sample набор запросов не работает. Это правильный путь?