У меня есть таблица ответов:
class Response(models.Model):
Question = models.ForeignKey(Question, on_delete=models.CASCADE)
Topic = models.ForeignKey(Topic, default=13, on_delete=models.CASCADE)
Response = models.TextField()
Client = models.ForeignKey(ClientDetail, default=8, on_delete=models.CASCADE)
Planit_location = models.ForeignKey(Planit_location, default=1, on_delete=models.CASCADE)
Date_added = models.DateField(default=datetime.date.today)
Document = models.ForeignKey(Document, default=0, on_delete=models.CASCADE)
def __str__(self):
return self.Response
Я могу получить данные из других таблиц, к которым они непосредственно присоединены, например, Вопросы, Тема, Клиент:
views.py
clientList = ClientDetail.objects.all().order_by('Client_name')
topicList = Topic.objects.all().order_by('Topic_name')
Теперь я хочу получить «Имя сектора» из моей таблицы секторов:
class Sector(models.Model):
Sector_name = models.CharField(max_length=255, default='Sector_name')
def __str__(self):
return self.Sector_name
, которая присоединена к моей таблице клиентов:
class ClientDetail(models.Model):
Sector = models.ForeignKey(Sector, default=8, on_delete=models.CASCADE)
Client_name = models.CharField(max_length=255, default='Client_name')
class Meta:
ordering = ['Client_name']
def __str__(self):
return self.Client_name
Я не могуиспользуйте тот же метод, который я использовал с клиентом, так как он не может найти поле "Sector_id" в таблице ответов:
sectorList = Sector.objects.all().order_by('Sector_name')
**THIS DOES NOT WORK**
На данный момент я могу получить только "Sector_id" из моей таблицы клиента, ночто я хочу, это "Имя сектора"
Что-то, что я должен добавить в мой файл documents.py?Поскольку я не могу использовать тот же метод, который я использовал для предыдущих моделей:
class ResponseDocument20(DocType):
Client = fields.NestedField(properties={
'Client_name': fields.TextField(),
'pk': fields.IntegerField(),
}, include_in_root=True)
class Meta:
model = Response
fields = [
'Response',
]
related_models = [ClientDetail]
def get_instances_from_related(self, related_instance):
if isinstance(related_instance, ClientDetail):
return related_instance.response_set.all()