Django 自定义字段没有属性“set_attributes_from_name”
Posted
技术标签:
【中文标题】Django 自定义字段没有属性“set_attributes_from_name”【英文标题】:Django custom field has no attribute '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 还很陌生。任何建议都会非常受欢迎:)。
【问题讨论】:
【参考方案1】:如果您想要自己的自定义字段,它应该是 models.Field 的子类,而不是 models.Model。
【讨论】:
没用。它搞砸了迁移,我不得不恢复..以上是关于Django 自定义字段没有属性“set_attributes_from_name”的主要内容,如果未能解决你的问题,请参考以下文章
Django 自定义字段没有属性“set_attributes_from_name”
python Django:autocomplete-light添加自定义属性以选择和预填充其他字段
如何允许在 Django 管理员中通过自定义 list_display 字段进行排序,该字段没有 DB 字段,也没有可注释