У меня 2 модели: Пациент и Местоположение. Локации связаны с пациентами 1 к 1. Когда пользователь входит в PatientDetailView для определенного пациента c, он может запрашивать местоположения с одинаковыми именами между пациентами. Пользователь выбирает место запроса из раскрывающегося меню.
В настоящее время в раскрывающемся меню отображаются все объекты Location, но я хочу показать только местоположения, подключенные к этому конкретному c пациенту, у которого мы находимся в DetailView.
В принципе, мне нужна эта строка для запроса местоположений, которые связаны с пациентом, у которого мы находимся в DetailView.
queryset=Location.objects.all().order_by('location_name')
Просмотр
def profile_search(request,pk):
if request.method == 'POST':
query_form = QueryForm(request.POST)
if query_form.is_valid():
model=Location
location = query_form.cleaned_data['location']
location_str = str(location).split(',')[0]
period = query_form.cleaned_data['period']
entry_list = list(Location.objects.all())
return_dict = {}
for i in range(len(entry_list)):
if location_str == entry_list[i].location_name and \
location.patient.idn != entry_list[i].patient.idn:
print('match')
return render(request, 'covidapp/query_page.html',{'return_dict':return_dict, 'query_form':query_form})
else:
query_form = QueryForm()
return render(request, 'covidapp/query_page.html',{'query_form':query_form})
Форма:
class QueryForm(forms.Form):
period = forms.IntegerField()
location = forms.ModelChoiceField(queryset=Location.objects.all().order_by('location_name'))
Модели:
class Patient(models.Model):
name = models.CharField(max_length=200)
idn = models.CharField(max_length=200, unique=True)
date_of_birth = models.DateField()
date_of_confirm = models.DateField()
case_number = models.IntegerField()
def get_absolute_url(self):
return reverse("patient_detail", kwargs={'pk':self.pk})
def __str__(self):
return self.name
class Location(models.Model):
patient = models.ForeignKey(Patient, related_name='locations', on_delete=models.CASCADE, null=True, blank=True)
location_name = models.CharField(max_length=50, null=True, blank=True)
address = models.CharField(max_length=300, null=True, blank=True)
district = models.CharField(max_length=300, null=True, blank=True)
grid_x = models.IntegerField(null=True, blank=True)
grid_y = models.IntegerField(null=True, blank=True)
date_from = models.DateField(null=True, blank=True)
date_to = models.DateField(null=True, blank=True)
details = models.CharField(max_length=300, null=True, blank=True)
category = models.CharField(max_length=300, null=True, blank=True)
def __str__(self):
return self.location_name
Я думал, что могу использовать instance
, но это работает только для ModelForms, и моя форма не связана ни с какими моделями.