【问题标题】:Connection of 3 Models with Foreign Key3个模型与外键的连接
【发布时间】:2015-03-23 20:07:04
【问题描述】:

我是 Django 的新手。我有 3 个模型:大陆、国家、地区

代码如下:

from django.db import models

# Create your models here.
class Continent(models.Model):
    continent = models.CharField(max_length=50, unique=True)

    class Meta:
        ordering = ['continent']

    def __str__(self):
        return self.continent

class Country(models.Model):
    country = models.CharField(max_length=50, unique=True)
    continent = models.ForeignKey(Continent)

    class Meta:
        ordering = ['country']
        verbose_name_plural = 'Countries'

    def __str__(self):
        return self.country

class Region(models.Model):
    country = models.ForeignKey(Country)
    region = models.CharField(max_length=50)

    class Meta:
        ordering = ['region']

    def __str__(self):
        return self.region

    def get_continent(self):
        return self.get_continent() 

我的 admin.py 看起来像这样:

    from django.contrib import admin
    from location.models import Continent, Country, Region

    # Register your models here.
    class MyAdmin1(admin.ModelAdmin):
        list_display = ['continent']
        #list_display_links = None
        #actions = None 

    class MyAdmin2(admin.ModelAdmin):
        list_display = ['country', 'continent']

    class MyAdmin3(admin.ModelAdmin):
        model = Region    
        list_display = ['region', 'country', 'get_continent']


    admin.site.register(Continent, MyAdmin1)
    admin.site.register(Country, MyAdmin2)
    admin.site.register(Region, MyAdmin3)

但在管理面板中,当我单击表格区域时,它不会在 3 列中显示 3 个属性。请帮忙。

【问题讨论】:

    标签: django


    【解决方案1】:

    您在Region.get_continent() 方法中获得无限递归:

    class Region(models.Model):
        ...
        def get_continent(self):
            return self.get_continent() 
    

    改成:

        def get_continent(self):
            return self.country.continent
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 2015-08-27
      • 1970-01-01
      • 2020-11-29
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多