首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django 2.0.2 -多对多关系-无法获取ID

Django 2.0.2 -多对多关系-无法获取ID
EN

Stack Overflow用户
提问于 2018-02-09 23:05:11
回答 1查看 616关注 0票数 0

我一直在尝试用Django 2.0.2开发一个and应用程序,包括完整的日历和Bitnami Stack。我似乎不理解Django中的多对多关系。目前,我正在尝试将所有拟合resourceIds与每个相应的事件(在本例中称为termin )进行匹配:

views.py:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
[{"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>]>"}]

这是Django在迁移我的数据库后创建的额外的表,它不在我的models.py中。

代码语言:javascript
复制
id,termin_id,benutzer_id
7,2,2
8,2,4
9,2,5
10,2,6
4,3,2
2,3,4
5,3,5
6,3,6

我不明白的是:为什么我不能直接访问它?有没有办法做到这一点?这将使它变得容易得多。

最后,我真正想要的是:每个具有相同termin_id的benutzer_id都应该被附加到json中,这样我就可以用每个合适的benutzer来显示每个termin。我必须在resource_id字段中键入什么才能实现此目的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 22:56:21

我使用以下代码解决了我的问题:

代码语言:javascript
复制
'resourceIds': list(Termin.objects.filter(id=termin.id).values_list(str('teilnehmer_betreuer__id'), flat=True))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48708656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档