Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django AttributeError';ModelFormOptions';对象没有属性';混凝土场地';_Python_Django_Django Forms - Fatal编程技术网

Python Django AttributeError';ModelFormOptions';对象没有属性';混凝土场地';

Python Django AttributeError';ModelFormOptions';对象没有属性';混凝土场地';,python,django,django-forms,Python,Django,Django Forms,我得到一个AttributeError,说“ModelFormOptions”对象没有属性“concrete\u fields”。我的代码如下: 我的模型是这样的: class OrderReceiving(models.Model): user = models.ForeignKey(User) po = models.ForeignKey(Order) datetime = models.DateTimeField(default=timezone.now)

我得到一个AttributeError,说“ModelFormOptions”对象没有属性“concrete\u fields”。我的代码如下:

我的模型是这样的:

class OrderReceiving(models.Model):
    user = models.ForeignKey(User)
    po = models.ForeignKey(Order)
    datetime = models.DateTimeField(default=timezone.now)
    product = models.ForeignKey(Product)
    quantity = models.IntegerField(default=0)
    building = models.ForeignKey(BuildingNumber)
    isele_abc = models.ForeignKey(IseleAbc)
    isele_num = models.ForeignKey(IseleNum)
    isele_floor = models.ForeignKey(IseleFloor)
class OrderReceivingForm(ModelForm):

    class Meta:
        model = OrderReceiving
        exclude = ['user', 'datetime']
        labels = {
            'po': _('Vendor PO ID'),
        }
我的模型形式如下:

class OrderReceiving(models.Model):
    user = models.ForeignKey(User)
    po = models.ForeignKey(Order)
    datetime = models.DateTimeField(default=timezone.now)
    product = models.ForeignKey(Product)
    quantity = models.IntegerField(default=0)
    building = models.ForeignKey(BuildingNumber)
    isele_abc = models.ForeignKey(IseleAbc)
    isele_num = models.ForeignKey(IseleNum)
    isele_floor = models.ForeignKey(IseleFloor)
class OrderReceivingForm(ModelForm):

    class Meta:
        model = OrderReceiving
        exclude = ['user', 'datetime']
        labels = {
            'po': _('Vendor PO ID'),
        }
我的观点是:

class OrderReceivingView(View):
    template = 'poreceiving/po_receive.html'

    def get(self, request, *args, **kwargs):
        context = {}
        form = OrderReceivingForm()
        context['form'] = form
        return render_to_response(self.template,
                              RequestContext(request, context))

    def post(self, request, *args, **kwargs):
        receive_form = OrderReceivingForm(request.POST)
        if receive_form.is_valid():
            receive_form.save()
        else:
            context = {}
            form = OrderReceivingForm(instance=receive_form)
            context['form'] = form
            return render_to_response(self.template,
                                  RequestContext(request, context))
        return HttpResponse('Hi everyone')
在这里,当我张贴无效的表格,然后我得到

AttributeError   'ModelFormOptions' object has no attribute 'concrete_fields'.
我希望得到带有错误消息的表单。 请帮帮我

我的回溯:

Traceback:
File "/home/student/virtualenvs/alex/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/student/virtualenvs/alex/lib/python2.7/site-packages/django/views/generic/base.py" in view
71.             return self.dispatch(request, *args, **kwargs)
File "/home/student/virtualenvs/alex/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
89.         return handler(request, *args, **kwargs)
File "/home/student/git/ezoffer-pos2/poreceiving/views.py" in post
42.             form = OrderReceivingForm(instance=receive_form)
File "/home/student/virtualenvs/alex/lib/python2.7/site-packages/django/forms/models.py" in __init__
320.             object_data = model_to_dict(instance, opts.fields,    opts.exclude)
File "/home/student/virtualenvs/alex/lib/python2.7/site-packages/django/forms/models.py" in model_to_dict
132.     for f in chain(opts.concrete_fields, opts.virtual_fields, opts.many_to_many):

Exception Type: AttributeError at /po/receiving/
Exception Value: 'ModelFormOptions' object has no attribute   'concrete_fields'

你的问题在这条线上

form = OrderReceivingForm(instance=receive_form)
您传递的是表单实例,而不是模型实例(
OrderReceivingForm
),这正是
OrderReceivingForm
所期望的。你应该这样做

order = OrderReceiving.objects.get(...)
form = OrderReceivingForm(instance=order)
或者完全删除实例参数,只需执行以下操作

form = OrderReceivingForm()

你的问题在这条线上

form = OrderReceivingForm(instance=receive_form)
您传递的是表单实例,而不是模型实例(
OrderReceivingForm
),这正是
OrderReceivingForm
所期望的。你应该这样做

order = OrderReceiving.objects.get(...)
form = OrderReceivingForm(instance=order)
或者完全删除实例参数,只需执行以下操作

form = OrderReceivingForm()
这一行:

form = OrderReceivingForm(instance=receive_form)
毫无意义。不能将窗体作为实例传递给窗体。instance参数指的是模型的实例,当您要更新现有模型实例(而不是创建新实例)时,会传递该实例。如果您没有更新现有的
订单接收
,则根本不要使用
实例

此行:

form = OrderReceivingForm(instance=receive_form)

毫无意义。不能将窗体作为实例传递给窗体。instance参数指的是模型的实例,当您要更新现有模型实例(而不是创建新实例)时,会传递该实例。如果您没有更新现有的
订单接收
,请不要使用
实例

请显示完整回溯。@daniel我用回溯更新了我的帖子请显示完整回溯。@daniel我用回溯更新了我的帖子