Django:“国家”对象没有“全部”属性

普罗蒂蒂普罗瓦

每当我尝试从 django admin 访问我的模型“Youtube”时,它都会向我显示此错误。我感觉我在YoutubeAdmin,getCountry方法中搞砸了我该如何解决这个问题?找不到办法。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()])
从不独行者

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章