【问题标题】:TypeError: __init__() missing 1 required positional argument: 'on_delete' how can i solve thisTypeError:__init__()缺少1个必需的位置参数:'on_delete'我该如何解决这个问题
【发布时间】:2020-03-01 16:13:49
【问题描述】:

Python 3.8.1 django 版本 3.0.3 当我运行此代码时,我收到此错误 TypeError: __init__() 缺少 1 个必需的位置参数:'on_delete'

Models.py

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class UserProfileInfo(models.Model):

    user = models.OneToOneField(User)

    #additional
    profile_site = models.URLField(blank = True)

    profile_pic = models.ImageField(upload_to = 'profile_pics', blank = True)

    def __str__(self):
        return self.user.username

forms.py

from django import forms
from django.contrib.auth.models import User
from basic_app.models import UserProfileInfo

class UserForm(forms.ModelForm):
    password = forms.CharField(widget = forms.PasswordInput())

    class meta():
        model = User
        fields = ('username', 'email', 'password')

class UserProfileInfo(forms.ModelForm):
    class meta():
        model = UserProfileInfo
        fields = ('profile_site', 'profile_pic')

【问题讨论】:

  • 可以加回溯吗?

标签: python django


【解决方案1】:

您为OneToOneFieldon_delete=… parameter [Django-doc] 添加一个值。这指定了当目标对象(这里是User)被删除时要做什么。例如,我们可以指定一个CASCADE

class UserProfileInfo(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_site = models.URLField(blank = True)
    profile_pic = models.ImageField(upload_to='profile_pics', blank=True)

    def __str__(self):
        return self.user.username

请阅读文档以确定您要使用的触发器。

【讨论】:

  • 它显示 ValueError: no enough values to unpack (expected 2, got 1)
  • @Rasel:这可能是因为您在某处传递了一些 choices=,而您传递的项目不是 2 元组列表。但我认为它位于其他地方。请提出一个新问题,并提供完整的回溯。
猜你喜欢
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2019-06-25
  • 2019-02-07
  • 1970-01-01
  • 2023-03-19
  • 2021-06-05
相关资源
最近更新 更多