【问题标题】:.py file is not compiled on django.py 文件未在 django 上编译
【发布时间】:2014-01-24 07:25:03
【问题描述】:

我正在使用 django 1.6.1。我在模型文件夹上有一个文件名“payment.py”,它没有编译为 .pyc 文件。即使我将文件名更改为“payment_room.py”,它仍然不会被编译

其他模型文件已经编译并且运行良好。

因此,如果我运行 syncdb 命令,django 将不会在我的数据库上创建表。我使用 manage.py 运行验证命令,但它没有返回任何错误。

注意 它仍处于调试和开发模式。该网络尚未部署到 apache 服务器。

from django.db import models
from ghb_manager.models.reservation import Reservation

class Payment (models.Model):
    class Meta:
        app_label = 'ghb_manager'

    PAYMENT_METHOD_CHOICES = (
    ('CA', 'Cash'),
    ('CR', 'Credit'),
    ('TR', 'Transfer')
    )

    payment_id = models.CharField(max_length=14, primary_key=True)
    reservation_id = models.ForeignKey(Reservation)
    ammount_tendered = models.DecimalField(max_digits=19, decimal_places=2)
    payment_method = models.CharField(max_length=20, choices=PAYMENT_METHOD_CHOICES)
    payment_date = models.DateField()

    def __unicode__(self):
        return self.payment_id

【问题讨论】:

  • 你能在这里发布“payment.py”吗?
  • 我只是把快照放在问题上
  • 应用是否在 INSTALLED_APPS 中?
  • 是的。我在“ghb_manager”应用程序上创建了其他 20 个模型,并且已经编译并且运行良好。

标签: django


【解决方案1】:

请检查您的模型目录中的 init.py。您必须导入您在模型目录中创建的所有模型,例如:

# __init__.py
from payment import Payment

Django 在 app.models 中查找应用的模型。

【讨论】:

  • 我还有其他未在 init.py 上注册的文件,它仍在编译。是因为外键关系吗?
  • 可能是的,当你想破坏你的 models.py 时,有两件事很重要。 1. init.py 中的条目和 2. 元类中的“app_label”。
猜你喜欢
  • 2013-10-21
  • 2020-11-20
  • 2021-03-13
  • 1970-01-01
  • 2011-07-14
  • 2021-12-07
  • 1970-01-01
相关资源
最近更新 更多