如何初始化一个类?

谢尔盖

请通过__ init__帮助设置CATEGORY_CHOICES的初始值。我有一个model.py类:

from django.db import models
from django.forms import ModelForm

class Anekdots(models.Model):
    def __init__(self):
        CATEGORY_CHOICES = (
                            (u'red', u'red'),
                            (u'blue', u'blue'),
                            (u'magenta', u'magenta'),
                            (u'green', u'green'),
                            (u'yellow', u'yellow'),
        )

    body = models.TextField(max_length=700)
    category = models.CharField(max_length=20, choices=CATEGORY_CHOICES)

但是在尝试运行python manage.py syncdb之后,出现以下错误:

NameError: name 'CATEGORY_CHOICES' is not defined

ps ps ps我需要通过CATEGORY_CHOICES init(自身)进行初始化

罗伯托

为什么需要在内部进行__init__呢?

从django docs中提取的示例代码:https : //docs.djangoproject.com/en/1.6/topics/db/models/

class Person(models.Model):
    SHIRT_SIZES = (
        ('S', 'Small'),
        ('M', 'Medium'),
        ('L', 'Large'),
    )
    name = models.CharField(max_length=60)
    shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)

在您的情况下,应为:

class Anekdots(models.Model):
    CATEGORY_CHOICES = (
                            (u'red', u'red'),
                            (u'blue', u'blue'),
                            (u'magenta', u'magenta'),
                            (u'green', u'green'),
                            (u'yellow', u'yellow'),
    )

    body = models.TextField(max_length=700)
    category = models.CharField(max_length=20, choices=CATEGORY_CHOICES)

编辑:(基于注释)如果类别记录是动态的,则可以使用初始化它们的方法来初始化它们:CATEGORY_CHOICES = Categories.get_all_entries()

但是,如果这些值是从DB获取的,则应考虑添加FK并让django模型完成这项工作。我的意思是(也摘自django doc):

最后,请注意,选择可以是任何可迭代的对象-不一定是列表或元组。这使您可以动态构造选择。但是,如果您发现自己的黑客选择是动态的,那么最好使用带有ForeignKey的正确数据库表。选择是针对不变的静态数据(如果有的话)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查一个类是否被初始化?

如何确保仅初始化一个实例,但从另一个类初始化?

用数组初始化一个类?

用数组初始化一个类

从数据行初始化一个类

用 new 初始化一个 cpp 类

Python初始化一个类中的列表

如何使用从另一个类获得的值刷新/重新初始化一个类?

Python:如何从一个类到另一个类获取未初始化的属性

如何通过另一个类更新/更改一个类的初始化参数?

用括号括起来的初始化器列表初始化一个类

如何初始化类之外的数组并为第一个元素设置值?

如何初始化一个常量对象字段在Java类

如何在 C++ 中声明一个零初始化的类成员?

如何初始化另一个类中定义的数组?

如何自动为Swift类创建一个初始化器?

如何在Flutter应用中初始化一个长期存在的类?

如何递归初始化一个继承列表的类?

如何初始化一个类和其中的shape属性?

如何初始化一个类并快速使用扩展

如何初始化包含来自另一个类的实例的列表?

如何使用 PageObject 模型在 C# 中初始化一个完整的类?

如何初始化一个类,详细如下

调用另一个类初始化程序时如何处理错误?

如何使用案例类中的另一个初始化一个字段?

我如何创建一个Ruby类,该类在传递一个块时会初始化并关闭?

在Swift中,如何为一个类创建一个便利的初始化,在该实现中初始化的实现创建类值而不是调用现有的初始化

如何重新初始化一个Spring bean?

如何初始化一个空的 ComponentRef?