python - Django 错误(属性):“CharField”对象没有属性“is_related”
问题描述
我正在尝试在我的新项目中向每个用户进行描述。但是当我尝试进行迁移时出现错误。我不知道如何解决它。我尝试了不同的东西,但没有任何效果,我的编码可能非常糟糕,但我也是 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 = models.CharField(max_length=250)
这样CharField
没有widget
分配给它,这是您应该在表单级别处理的事情。
您可能需要进行迁移,因为到目前为止,您的模型description
中还没有字段。Desc
我在某种程度上同意,表单经常有一个同名的字段是令人困惑的(这些通常是同名模型字段的默认表单字段)。然而,这个想法是模型字段指定数据库中的列,而表单字段指定(HTML)表单中的文本框、复选框等。
推荐阅读
- c - 内联函数中名称冲突的局部变量
- shopify - 如何从本地系统网站设置创建应用程序并将文件部署到 shopify 合作伙伴帐户?
- java - 如何将属性从 JSP 传递到标记文件。覆盖标签中的值,并在 JSP 中获取更新后的值
- r - 将 lapply/for 循环与系统函数一起用于批处理终端命令
- html - 有问题
- python - 是否可以从父进程中使用 opencv VideoCapture 对象的 read() 方法?
- javascript - Angular 订阅在值更改之前不起作用(需要先初始化)
- r - 使用 highcharter 更改分组颜色
- javascript - 缺少 RapidAPI 应用程序密钥(不缺少)
- javascript - 在状态更新上反应本机 setState 方法不调用渲染函数