Django模型导入问题

2024-10-01 07:39:11 发布

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

我已经将我的模型文件重构成一个模块,这样就可以更容易地维护代码,因为代码已经增长了很多。在

有趣的是,如果一个类引用了另一个类,而另一个类引用了轮到它的第一个类,那么它就不起作用了:

UPD:循环引用使python感到困惑,这就是导致问题的原因。当引用模型定义中的其他模型时,这很容易修复。然而,Picture有引用paperType类的方法,反之亦然——如何解决这个问题?在

这是课堂图片:

from django.db import models
from django.utils import simplejson
from picviewer.models import Collection, ImageSizeRatio, printSize

class Picture(models.Model):
    name = models.TextField(null=False,blank=False,unique=False)
    collection = models.ForeignKey(Collection)
    popularity = models.IntegerField(default=0,unique=False)
    isPurchasable = models.BooleanField(default=False)
    allowBuyExclusive = models.BooleanField(default=False)
    basePrice = models.DecimalField(decimal_places=2,max_digits=8)
    imageSizeRatio = models.ForeignKey(ImageSizeRatio)
    imageThumbnail = models.FileField(upload_to='pictures')
    imagePreview = models.FileField(upload_to='pictures')
    imageSmall = models.FileField(upload_to='pictures')
    imageNormal = models.FileField(upload_to='pictures')
    imageLarge = models.FileField(upload_to='pictures')
    imageHuge = models.FileField(upload_to='pictures')
    allowedPrintSize = models.ManyToManyField(printSize)

下面是它引用的printSize类-您可以看到它调用Picture函数来计算指定printSize的图片:

^{pr2}$

这是我在shell中尝试导入图片时得到的结果:

>>> from picviewer.models import Picture
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "D:\~Sasha\eclipse_workspace\zavalen\picviewer\models\Picture.py", line 4, in <module>
    from picviewer.models import Collection, ImageSizeRatio, printSize
  File "D:\~Sasha\eclipse_workspace\zavalen\picviewer\models\printSize.py", line 4, in <module>
    from picviewer.models import Picture
ImportError: cannot import name Picture
>>>

我能治好这个吗?:)


Tags: tofrom模型importfalsemodels图片collection
1条回答
网友
1楼 · 发布于 2024-10-01 07:39:11

为避免循环导入,请将FK模型指定为字符串,例如

collection = models.ForeignKey('Collection') # Collection is in the same module

或者

^{pr2}$

相关问题 更多 >