【发布时间】:2018-05-20 07:25:46
【问题描述】:
因此,我正在尝试为读取具有给定数据格式的 .xml 文件的数据库构建模型,但在设置向后兼容性时遇到了麻烦。
我的模特是
from django.db import models
class Continent(models.Model):
name = models.CharField(max_length=60, default='', unique=True)
code = models.CharField(max_length=3, default='')
countries = models.ManyToManyField(
'Continent',
through='Country',
)
class Country(models.Model):
name = models.CharField(max_length=60, default='', unique=True)
code = models.CharField(max_length=3, default='', unique=True)
capital = models.CharField(max_length=60, default='')
population = models.PositiveIntegerField(default=0)
area = models.PositiveIntegerField(default=0)
continent = models.ForeignKey(Continent, default='', related_name='related_name')
如您所见,我对related_name 有点不知所措。无论如何,运行一个解析过这些数据的测试会给我错误
AttributeError: 'ManyToManyField' 对象没有属性 '_m2m_reverse_name_cache'
但我不确定我应该如何消除它。
测试尝试运行
fi = europe.countries.get(code="fi")
如果找不到任何东西(数据包含每个大陆和国家),则会引发异常,因此向后引用目前还不起作用。
编辑: 这是引发异常的测试部分
def testCountryThroughContinent(self):
europe = Continent.objects.get(code="eu")
try:
sw = europe.countries.get(code="sw")
except:
self.assertTrue(False, "Getting country failed. Did you remember that countries should be accessed through attribute countries?")
self.assertEqual(sw.name, "Sweden", "Getting a country from a continent")
【问题讨论】:
-
您在现实生活中真正想要实现的目标是什么?鉴于名称,您的方法看起来过于复杂
-
在这个阶段,我正在尝试为数据库制作模型,并且已经为我提供了一个预制的测试功能,以确保它可以正常工作。我现在只有一部分葡萄干异常,我将其编辑到问题中