【问题标题】:Django custom field has no attribute 'set_attributes_from_name'Django 自定义字段没有属性“set_attributes_from_name”
【发布时间】:2022-01-23 22:11:36
【问题描述】:

我有一个自定义字段可以将输入日期转换为以年为单位的时间增量,四舍五入:

class CustomField(models.Model):
    start_date = models.DateField()

    def days_to_years(self, date: timedelta):
        return math.ceil(date.days / 365)

    def save(self, *args, **kwargs):
        delta = datetime.today() - self.start_date
        self.start_date = math.ceil(delta.days / 365)
        super(CustomField, self).save(*args, **kwargs)

我在以下模型中使用:

from django.contrib.postgres.fields import ArrayField

class Component(ComponentBase):
    years = ArrayField(
            CustomField()
    )

当我尝试进行迁移时,会引发错误 AttributeError: 'CustomField' object has no attribute 'set_attributes_from_name,我似乎无法调试它,因为我对 Django 还很陌生。任何建议都会非常受欢迎:)。

【问题讨论】:

    标签: django


    【解决方案1】:

    如果您想要自己的自定义字段,它应该是 models.Field 的子类,而不是 models.Model。

    【讨论】:

    • 没用。它搞砸了迁移,我不得不恢复..
    猜你喜欢
    • 2012-11-18
    • 2015-08-07
    • 2022-01-24
    • 2021-10-17
    • 2015-09-30
    • 2022-10-15
    • 2011-06-17
    • 2019-09-06
    • 2011-12-10
    相关资源
    最近更新 更多