Python Django 2.0.2-多对多关系-无法获取ID
我一直在尝试用Django 2.0.2开发一个Web应用程序,包括完整的日历和Bitnami堆栈。我似乎不理解Django的多对多关系。目前,我正在尝试将所有配件资源ID与每个名为termin的对应事件进行匹配,在本例中: views.py:Python Django 2.0.2-多对多关系-无法获取ID,python,json,django,fullcalendar,many-to-many,Python,Json,Django,Fullcalendar,Many To Many,我一直在尝试用Django 2.0.2开发一个Web应用程序,包括完整的日历和Bitnami堆栈。我似乎不理解Django的多对多关系。目前,我正在尝试将所有配件资源ID与每个名为termin的对应事件进行匹配,在本例中: views.py: def events(request): terminList = Termin.objects.all() termine = [] for termin in terminList: termine.append({'title': termi
def events(request):
terminList = Termin.objects.all()
termine = []
for termin in terminList:
termine.append({'title': termin.beschreibung,
'start': termin.startzeit,
'end': termin.endzeit,
'resourceId': str(termin.teilnehmer_betreuer.all()) ## Trying to get a Resource ID here ##
})
return HttpResponse(json.dumps(termine, cls=DjangoJSONEncoder), content_type='application/json')
models.py:
class Termin(models.Model):
GRUEN = 'GR'
GELB = 'GE'
ROT = 'RO'
UEBERSCHREIBBARKEIT_AUSWAHL = (
(GRUEN, 'Überschreibbar'),
(GELB, 'Auf Anfrage'),
(ROT, 'Nicht Überschreibbar'),
)
startzeit = models.DateTimeField(default=datetime.datetime.today)
endzeit = models.DateTimeField(default=datetime.datetime.today)
beschreibung = models.TextField(max_length=400)
teilnehmer_patient = models.ManyToManyField(Patient)
teilnehmer_betreuer = models.ManyToManyField(Benutzer)
ueberschreibarkeit = models.CharField(
max_length=25,
choices=UEBERSCHREIBBARKEIT_AUSWAHL,
default=GRUEN,
)
raum = models.ForeignKey(Raum, on_delete=models.SET_NULL, null=True)
def __str__(self):
return self.beschreibung
我得到的json:
[{"title": "Test", "start": "2018-02-09T06:57:23Z", "end": "2018-02-09T07:20:00Z", "resourceId": "<QuerySet []>"}, {"title": "Test", "start": "2018-02-09T13:05:59Z", "end": "2018-02-09T13:05:59Z", "resourceId": "<QuerySet [<Benutzer: doktor>, <Benutzer: joschmidl>, <Benutzer: skywalker>, <Benutzer: qsdasdsada>]>"}, {"title": "Taesaed123", "start": "2018-02-09T13:06:21Z", "end": "2018-02-09T13:06:21Z", "resourceId": "<QuerySet [<Benutzer: doktor>, <Benutzer: joschmidl>, <Benutzer: skywalker>, <Benutzer: qsdasdsada>]>"}]
我不明白的是:为什么我不能直接访问它?有办法做到这一点吗?这会让事情变得容易得多
最后,我想要的是:每个具有相同termin_id的benutzer_id都应该被附加到json中,这样我就可以用每个合适的benutzer显示每个termin。要实现这一点,我必须在resource_id字段中键入什么?我使用以下代码解决了我的问题:
'resourceIds': list(Termin.objects.filter(id=termin.id).values_list(str('teilnehmer_betreuer__id'), flat=True))
首先,你当然不应该在那个查询集上调用str。但是你到底想要什么样的价值呢?只是一个id列表?注意,您不需要str'teilnehmer\u betreuer\u id'中的str。它已经是一个字符串了。
'resourceIds': list(Termin.objects.filter(id=termin.id).values_list(str('teilnehmer_betreuer__id'), flat=True))