当前位置: 首页 > 知识库问答 >
问题:

-Django-Get“无法分配”u'Wing:“卡车。在为数据库创建新对象时,“模型”必须是“模型”实例

索锐藻
2023-03-14

models.py:

class MODEL(models.Model):
    ModelName = models.CharField(max_length = 128, unique = True)
    URL_Slug = models.SlugField(unique = True)
    ...

class Maker(models.Model):
    maker = models.CharField(max_length = 128, unique = True)
    URL_Slug = models.SlugField(unique = True)
    ...
class Truck(models.Model):
    MODEL = models.ForeignKey(MODEL)
    CarID = models.CharField(max_length = 10, unique = True, null = False)
    Maker = models.ForeignKey(Maker)   
    year = models.IntegerField(default = 0)
    def __unicode__(self):
        return self.CarID

形式。py:

class MODELForm(forms.ModelForm):
    ModelName = forms.CharField(max_length = 128, help_text = 'Enter the NEW model name')
    URL_Slug = forms.SlugField(widget = forms.HiddenInput(), required = False)

    class Meta:
        model = MODEL
        fields = ('ModelName', )

class MakerForm(forms.ModelForm):
    maker = forms.CharField(max_length = 128, help_text = 'Enter the NEW maker')
    URL_Slug = forms.SlugField(widget = forms.HiddenInput(), required = False)

    class Meta:
        model = Maker
        fields = ('maker', )

class TruckForm(forms.ModelForm):
    MODEL = forms.CharField(max_length = 128, help_text = 'Enter the NEW model name')
    CarID = forms.CharField(max_length = 10, help_text = 'Enter the NEW truck ID')
    Maker = forms.CharField(max_length = 128, help_text = 'Enter the NEW maker')   
    year = forms.IntegerField(help_text = 'Enter the year of production')

    class Meta:
        model = Truck
        fields = ('MODEL', 'CarID', 'Maker', 'year')

意见。py:

def add_Truck(request):
    form = TruckForm()

    if request.method == 'POST':
        form = TruckForm(request.POST)
        if form.is_valid():
            form.save(commit = True)
            return index(request)

        else:
            print(form.errors)
    return render(request, 'APP/addTruck.html', {'form': form})

HTML文件:

<!DOCTYPE html>
<html>
    <body>
        <div>
            <form id = "Truck" method = "post" action = "/APP/NewTruck/">
                {%csrf_token%}
                {% for field in form.visible_fields %}
                    {{field.errors}}
                    {{field.help_text}}
                    {{field}}<br/>
                {% endfor %}
                <input type = "submit" name = "submit" value = "Create Truck">
            </form>
        </div>
    </body>
</html>

我正在尝试在addTruck中创建一个新对象。html,因为模型和生成器是外键,所以在创建Truck对象时,模型和生成器字段也应该是object。

回溯:

以下是来自终端Macbook的Traceback:

-

[2017年8月7日09:14:04]“GET/APP/NewTruck/HTTP/1.1”200 1240
内部服务器错误:/APP/NewTruck/Traceback(最近一次调用
最后一次):File
“/Library/Frameworks/Python.framework/Versions/2.7/site packages/django/core/handlers/exception.py”,第39行,在内部响应=GET_响应(请求)文件中“/Library/Frameworks/Python。framework/Versions/2.7/lib/python2。7/站点包/django/core/handlers/base。py“,第187行,在_get_response response=self.process_exception_by_中间件(e,request)文件
”/Library/Frameworks/Python中。framework/Versions/2.7/lib/python2。7/站点包/django/core/handlers/base。py“,第185行,在_get_response response=wrapped_callback(请求,*callback_args,**callback_kwargs)文件“/Users/apple/WebWorkshop/TKTrading/APP/views中。py”,第88行,在
中,如果form.is\u valid():File“/Library/Frameworks/Python,则添加Truck。framework/Versions/2.7/lib/python2。7/站点包/django/forms/forms。py”,第169行,在有效返回self.is绑定而非self.errors文件“/Library/Frameworks/Python中。framework/Versions/2.7/lib/python2。7/站点包/django/forms/forms。py”,第161行,在errors self.full_clean()文件“/Library/Frameworks/Python中。framework/Versions/2.7/lib/python2。7/站点包/django/forms/forms。py“,第372行,在full_clean self.\u post_clean()文件“/Library/Frameworks/Python中。framework/Versions/2.7/lib/python2。7/站点包/django/forms/models。py“,第388行,在_post_clean self.instance=construct_instance(self,self.instance,opts.fields,opts.exclude)文件
”/Library/Frameworks/Python中。framework/Versions/2.7/lib/python2。7/站点包/django/forms/models。py“,第60行,在construct_instance f.save_form_data(instance,cleaned_data[f.name])文件“/Library/Frameworks/Python中。framework/Versions/2.7/lib/python2。7/站点包/django/db/models/fields/init。py”,第833行,在save_form_data setattr(instance,self.name,data)文件“/Library/Frameworks/Python中。framework/Versions/2.7/lib/python2。7/站点包/django/db/模型/字段/相关描述符。py“,第211行,在set self.field.remote_field.model._meta.object_name,ValueError:无法分配“u'Wing'”:“卡车”。“模型”必须是“模型”实例。
[07/Aug/2017 09:14:42]“POST/APP/NewTruck/HTTP/1.1”500 93290

共有1个答案

吕奇
2023-03-14

卡车表单中

MODEL = forms.CharField(max_length = 128, help_text = 'Enter the NEW model name')

在您的模型中,

MODEL = models.ForeignKey(MODEL)

ForeignKey字段需要是相应模型的实例,而不是纯文本。错误消息对此非常具体。在您的情况下,如果每次都要为新卡车创建新模型,出于适当的原因,您可能需要覆盖ModelFormsave()方法。或者,如果您想从现有的模型中选择模型,您可以让Django为字段使用默认的选择小部件,或者您也可以通过定义自定义小部件来覆盖该小部件。

MODEL = forms.ModelChoiceField(queryset=MODEL.objects.all())
#something like this.

 类似资料:
  • 如何知道django模型的一个实例何时在sqlite中创建了?我尝试了许多方法,但是我不知道或不知道我的数据库实例是何时创建的 从datetime导入datetime,time delta time _ threshold = datetime . now()-time delta(hours = 4)results = x . objects . filter(created _ _ lt =

  • 在简单的示例中你可以使用 java.lang 和 java.util 包中的类, 还有用户自定义的Java Bean来构建数据对象: 使用 java.lang.String 来构建字符串。 使用 java.lang.Number 来派生数字类型。 使用 java.lang.Boolean 来构建布尔值。 使用 java.util.List 或Java数组来构建序列。 使用 java.util.Ma

  • 本文向大家介绍Django 根据数据模型models创建数据表的实例,包括了Django 根据数据模型models创建数据表的实例的使用技巧和注意事项,需要的朋友参考一下 如果使用默认的数据库 SQLite3,则无需配置settings.py 使用其他数据库,则需要配置settings.py,这里以Mysql为例; 在models.py中完成数据模型的创建: 并且在admin.py中完成注册: 最

  • 为了持久化数据,我首先创建了如下所示的user对象,并使用sessionFactory进行保存。 由于上述努力,创建了userid数据为int的用户表。 但后来我将POJO的userid数据类型更改为string。 另外,我将hbm2ddl属性更改为update。 因此,在此更改之后,即使用户对象使用字符串作为userid,表userid数据类型也不会更改为varchar。如何使用hibernat

  • 问题内容: 我有只希望从中创建一个实例的模型,不应再允许更多实例。 这可能吗?我有感觉到已经在某处完成了此操作,但是很遗憾,我无法找到它。 编辑:我需要一个愚蠢的简单CMS。我有一个FrontPage和Page类继承的抽象类。我只希望能够创建一个首页对象。 FrontPage对象和Page对象之间的区别在于,它们应该具有略有不同的字段和模板,并且如上所述,只能创建一个FrontPage。 问题答案

  • 问题内容: 我想创建一个模型对象,例如Person,如果不存在person的id,否则我将获得该person对象。 创建新人员的代码如下: 但是我不知道在哪里检查并获取现有的人对象。 问题答案: Django中已经有一个,https://docs.djangoproject.com/en/dev/ref/models/querysets/#get- or-create 对你来说可能是: