Django:“Country”对象没有属性“all”

2024-09-26 22:53:15 发布

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

每当我试图从django admin访问我的模型“Youtube”时,它都会显示这个错误。我感觉到我在YoutubeAdmin方法中把它搞砸了。我怎样才能解决这个问题?找不到办法。它在错误中显示model Youtube doesn't have a filed getCountry

我的型号:

class Youtube(models.Model):
    link = models.CharField(max_length=2000)
    scrap_interval_hour = models.IntegerField(default=8)
    last_scrapped_datetime = models.DateTimeField(blank=True, null=True)
    is_feed = models.BooleanField(default=False)
    created_date = models.DateField(
        auto_now_add=True)
    # Foriegn Key
    country = models.ForeignKey(Country, on_delete=models.CASCADE)

    class Meta:
        ordering = ('created_date', )

管理

from django.contrib import admin
from fpn.models import Youtube
from datetime import timedelta

class YoutubeAdmin(admin.ModelAdmin):
    def get_fields(self, request, youtube=None):
        fields = super(YoutubeAdmin, self).get_fields(request, youtube)
        fields.remove('last_scrapped_datetime')

        if youtube:
            fields.remove('country')
        return fields

    model = Youtube
    list_per_page = 10
    list_display = ('link', 'is_feed',
                    'getCountry', 'last_scrapped_datetime')
    list_filter = ('country', 'is_feed', )

    def getCountry(self, obj):
        return "\n".join([coun.name for coun in obj.country.all()])

Tags: fromtruefieldsdatetimeadminyoutubeismodels
1条回答
网友
1楼 · 发布于 2024-09-26 22:53:15

ForeignKey创建多对一关系。这意味着对于一个国家,你可以拥有许多Youtube对象。但反过来说,一个Youtube对象只能有一个国家

因此,在您的情况下,您无法从youtube对象查询国家列表。因为它只有一个相关国家,您可以直接访问:

def getCountry(self, obj):
   return obj.country.name

相关问题 更多 >

    热门问题