按字母顺序定义 Django 模型
Defining django models in an alphabetic order
我可以按字母顺序定义 Django 模型吗?
模型取自django tutorial:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
我希望 Choice
在 Question
之前定义。简单重新排序后
class Choice(models.Models):
question = models.ForeignKey(Question)
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
class Question(models.Models):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
失败,因为在告诉解释器它是什么之前我需要Question
。
添加简单的空
class Choise(models.Model): pass
class Question(models.Model): pass
导致 django 尖叫并且仍然失败 python manage.py makemigrations polls
。
是否有按字母顺序定义模型的技巧?
或者我应该放弃这个想法,只是从完全不相关的定义到与所有相关的事物?
注意:
根据 Sayse 的说法,解决方法会破坏 IDEs,因为 IDE 无法知道您是指文字字符串还是正在寻找 class.
您可以引用尚未使用引号声明的模型:
class Choice(models.Models):
question = models.ForeignKey('Question')
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
class Question(models.Models):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身:
question = models.ForeignKey('Question')
而不是
question = models.ForeignKey(Question)
来自https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.ForeignKey
我可以按字母顺序定义 Django 模型吗?
模型取自django tutorial:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
我希望 Choice
在 Question
之前定义。简单重新排序后
class Choice(models.Models):
question = models.ForeignKey(Question)
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
class Question(models.Models):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
失败,因为在告诉解释器它是什么之前我需要Question
。
添加简单的空
class Choise(models.Model): pass
class Question(models.Model): pass
导致 django 尖叫并且仍然失败 python manage.py makemigrations polls
。
是否有按字母顺序定义模型的技巧?
或者我应该放弃这个想法,只是从完全不相关的定义到与所有相关的事物?
注意: 根据 Sayse 的说法,解决方法会破坏 IDEs,因为 IDE 无法知道您是指文字字符串还是正在寻找 class.
您可以引用尚未使用引号声明的模型:
class Choice(models.Models):
question = models.ForeignKey('Question')
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
class Question(models.Models):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身:
question = models.ForeignKey('Question')
而不是
question = models.ForeignKey(Question)
来自https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.ForeignKey