Два внешних ключа в одной модели

Я создаю свое первое приложение на Django и у меня возникли проблемы с экспортом некоторых значений.

У меня есть модель, назовем ее Машины, с некоторыми атрибутами (покупатель, имя, модель, серийный номер и т.д.).

Другая моя модель - это модель категории посещений, в которой есть 2 причины для посещения (обслуживание, осмотр)

Наконец, у меня есть последняя модель, в которой есть visitDetails (дата посещения, заметки, причина посещения (которая является внешним ключом модели категории посещения, и детали машины (которая является внешним ключом модели машины).

Как я могу получить для каждого визита подробную информацию о причине визита?

Мне удалось получить все MachineDetails для каждой машины с помощью:

machine = Machines.objects.get(id=id) visit_details = machine.details.all() - details является relate_name для machine_details, который является объектом внутри модели visitDetails с внешним ключом Machines.

Но я не могу понять, как также получить категорию посещения для каждого посещения.

Мой код:

def export_to_excel(request, id):

response = HttpResponse(content_type='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename="export.xlsx"'

wb = Workbook()
ws = wb.active
ws.title = "Products"

# Add headers
headers = ["FOO", "BAR", "FOO", "BAR"]
ws.append(headers)

# Add data from the model
machine_details = Machines.objects.get(id = id)


details = machine_details.visit.all()


for detail in details:
    ws.append([detail.visitDate,detail.workingHours, detail.loadHours, detail.cNotes])

# Save the workbook to the HttpResponse
wb.title = 'title'
wb.save(response)
return response

МОДЕЛИ

class Machines(models.Model):

cOwner = models.CharField(max_length=32)
cModel = models.CharField(max_length=32)
cSerial = models.CharField(max_length=32)
cBuyDate = models.DateField()
cTechnician = models.ForeignKey(User, 
on_delete=models.SET_NULL, blank=True, null=True, 
related_name="technician")

def __str__(self) -> str:
    return self.cOwner

class visitCategory(models.Model):

visitReason = models.CharField(max_length=64)

def __str__(self) -> str:
    return self.visitReason

class cVisit(models.Model):

itemDetails = models.ForeignKey(Machines, 
on_delete=models.Case, 
blank='True', null='True', related_name="visit")

visitReason = models.ForeignKey(visitCategory, 
on_delete=models.CASCADE, blank="True", 
null="True",related_name="vReason")

visitDate = models.DateField()

workingHours = models.IntegerField(default=0)

loadHours = models.IntegerField(default=0)

cNotes = models.TextField(default="")

def dateRender(self):
    return self.visitDate.strftime("%Y-%m-%d")
Вернуться на верх