"Foreign key not available on object"(在对象上无法使用外键)

45 浏览
0 Comments

"Foreign key not available on object"(在对象上无法使用外键)

非常初级的问题困扰着我。我有一个问题无法在模板中显示外键ArtWorkImages,所以我想在视图中调试它,但外键ArtworkImage在Artwork上不可用:

我的模型:

from django.db import models
class Artwork(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    def __unicode__(self):
        return self.title
class ArtworkImage(models.Model):
    property = models.ForeignKey(Artwork, related_name='images')
    image = models.ImageField(upload_to = "images/")

视图:

from django.shortcuts import render
from erikheide.models import Artwork
from erikheide.models import ArtworkImage
def index(request):
    artworks = Artwork.objects.all()[:5]
    artwork = artworks[0]
    images = artwork.artworkimage_set.all()
    context = {'latest_poll_list': artworks}
    return render(request, 'index.html', context)

错误:

> Traceback (most recent call last):   File
> "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py",
> line 115, in get_response
>     response = callback(request, *callback_args, **callback_kwargs)   File "/home/fhp/Hentede filer/tastypie/django15/erikheide/views.py",
> line 13, in index
>     images = artwork.artworkimage_set.all() AttributeError: 'Artwork' object has no attribute 'artworkimage_set'

未能正常工作的模板(没有图片显示)

{% if artworks %}

{% for image in artwork.images_set.all %} {% endfor %} {% endfor %}

{% else %}

No artworks are available.

{% endif %}

admin 更改状态以发布 2023年5月21日
0
0 Comments

尝试

artwork.images.all()

而不是

artwork.artworkimage_set.all()

image_set是RelatedManager的默认名称。如果使用外键指定了related_name,则RelatedManager名称将被重新定义。

0
0 Comments

您在ForeignKey字段上定义了一个related_name,您需要使用它来跟踪关系。

将:

images = artwork.artworkimage_set.all()

替换为:

images = artwork.images.all()

另请参见:Django中的`related_name`用于什么?

0