正在尝试加入并获取select“相关的”“audio”“links”中给定的无效字段名。选项包括:(无)

2024-10-01 07:47:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对两个表执行联接-希望从ReleasesAll和AudioLinks返回所有数据。在

错误

FieldError at /api/release/0

Invalid field name(s) given in select_related: 'audio_links'. Choices are: (none)

模型.py

class ReleasesAll(models.Model):
    id = models.IntegerField(primary_key=True)
    artist = models.CharField(max_length=255)
    all_artists = models.CharField(max_length=200)
    remixers = models.TextField(blank=True, null=True)
    format = models.CharField(max_length=80)
    title = models.CharField(max_length=255)
    label = models.CharField(max_length=255)
    label_no_country = models.CharField(max_length=255)

    class Meta:
        managed = False
        db_table = 'releases_all'

class AudioLinks(models.Model):
    release = models.ForeignKey('ReleasesAll', models.DO_NOTHING, db_column='release_id')
    track_number = models.IntegerField()
    track_name = models.CharField(max_length=500)
    url = models.CharField(max_length=500)
    m3u_link = models.TextField()
    type = models.CharField(max_length=50, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'audio_links'

视图.py

^{pr2}$

如果我删除select_related,则查询正常


Tags: nametruedbreleasemodelslinksselectaudio
1条回答
网友
1楼 · 发布于 2024-10-01 07:47:37

您应该对多个关系使用prefetch_related。另外,prefetch_related的参数应该是related_name值,或者在您的例子中是audiolinks_set

a_release = self.queryset.prefetch_related('audiolinks_set').get(pk=kwargs['release_id'])

docs

select_related is limited to single-valued relationships - foreign key and one-to-one.

相关问题 更多 >