python - Django 错误(属性): 'CharField' object has no attribute 'is_related'

标签 python django forms attributeerror

我试图在我的新项目中向每个用户进行描述。但是当我尝试进行迁移时出现错误。我不知道如何解决它。 我尝试过不同的方法,但没有任何效果,我的编码可能非常糟糕,但我对 python 和 django 也是新手。

错误:

C:\Users\bruger\Dropbox\min-login-web\web_login>python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\base.py", line 316, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\base.py", line 353, in execute
    output = self.handle(*args, **options)
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\commands\makemigrations.py", line 143, in handle
    loader.project_state(),
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\migrations\loader.py", line 322, in project_state
    return self.graph.make_state(nodes=nodes, at_end=at_end, real_apps=list(self.unmigrated_apps))
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\migrations\graph.py", line 378, in make_state
    project_state = self.nodes[node].mutate_state(project_state, preserve=False)
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\migrations\migration.py", line 87, in mutate_state
    operation.state_forwards(self.app_label, new_state)
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\migrations\operations\models.py", line 85, in state_forwards
    list(self.managers),
  File "C:\Users\bruger\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\migrations\state.py", line 377, in __init__
    if field.is_relation and hasattr(field.related_model, '_meta'):
AttributeError: 'CharField' object has no attribute 'is_relation'

我的模型文件:

from django import forms
from django.db import models
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from PIL import Image


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

    def save(self):
        super().save()

        img = Image.open(self.image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)

class Desc(models.Model):
    description = forms.CharField(widget = forms.Textarea, max_length = 250, required=False)

    def __str__(self):
        return f'{self.user.username} Desc'

我希望有人能帮助我,因为这真的让我很紧张。

最佳答案

您混合了表单模型。模型指定(HTML)表单,它指定数据库应如何存储数据,因此您需要使用models.CharField:

class Desc(models.Model):
    description = <b>models.</b>CharField(max_length=250)

这样的 CharField 没有分配给它的 widget,这是您应该在表单级别处理的事情。

您可能需要进行迁移,因为到目前为止,您的描述模型中还没有描述字段。

我在某种程度上同意,表单经常具有相同名称的字段(这些通常是具有相同名称的模型字段的默认表单字段),这令人困惑。然而,其想法是模型字段指定数据库中的列,而表单字段指定 (HTML) 表单中的文本框、复选框等。

关于python - Django 错误(属性): 'CharField' object has no attribute 'is_related' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734945/

相关文章:

PHP删除表单用于从MySQL数据库中删除数据

python - Pandas Dataframe 分组依据,带有列表的列

python - Django allauth social login(google OAuth 2) - 域限制列表

python - Django 模板标签

python - 在 win32 上为 django 提供服务的生产就绪服务器

jquery - 为什么我无法删除此表单?

python - 将列表传递给类中的函数

python - django模板在哪里

python - 使用 timedelta 时小数位太多

php - fwrite 的 777 权限是否危险?