[英]Many-to-many relationship as JSON
假設我有一個 model 由具有在一周中的某些日子工作的員工的設施組成。
#models.py
class Weekday(models.Model):
name = models.CharField() # 'Monday', 'Tuesday', etc.
class Facility(models.Model):
name = models.CharField()
class Employee(models.Model):
name = models.CharField()
facility = models.ForeignKey(Facility)
# e.g. works on Mondays and Tuesdays
weekdays = models.ManyToManyField(Weekday)
現在我希望我的 TemplateView 生成一個 JSON,它按星期幾列出給定設施的員工。 這需要為 JSON,因為周歷應由 javascript 呈現。
# views.py
class CareFacility(DetailView):
model = Facility
def get_context_data(self):
return {
'week_plan_json': ?
}
JSON 可能類似於:
[
{
'model': 'Weekday',
'name': 'Monday',
'employees': [
{
'model': 'Employee',
'name': 'John'
},
{
'model': 'Employee',
'name': 'Ida'
}
]
},
{
'model': 'Weekday',
'name': 'Tuesday',
'employees': [
{
'model': 'Employee',
'name': 'John'
}
]
},
{
# Wednesday
# etc...
}
]
確切的格式可能不同,但我想知道如何將這三個模型組合在一起,使其按Weekday
分組
使用 Django 提供的相關對象參考。 以下代碼片段應該向您展示這個想法並為您指明正確的方向,以便您可以根據自己的需要進行調整:
from collections import defaultdict
d = defaultdict(list)
f = Facility() # Assuming this is the facility you're looking at
for employee in f.employee_set.all():
for weekday in employee.weekdays.all():
d[weekday.name].append(employee.name)
return dict(d)
這應該給你類似的東西:
{
'Monday': ['John', 'Ida'],
'Tuesday': ['John'],
...
}
有關關系的更多信息,請查看Django 文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.