我对Django中模型的自定义保存方法有一个问题。 返回的错误是:
Traceback (most recent call last):
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/viewsets.py", line 78, in view
return self.dispatch(request, *args, **kwargs)
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
return view_func(*args, **kwargs)
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/views.py", line 399, in dispatch
response = self.handle_exception(exc)
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/views.py", line 396, in dispatch
response = handler(request, *args, **kwargs)
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/mixins.py", line 52, in create
self.object = serializer.save(force_insert=True)
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/serializers.py", line 560, in save
self.save_object(self.object, **kwargs)
File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/serializers.py", line 935, in save_object
obj.save(**kwargs)
TypeError: save() takes at least 3 arguments (2 given)
这里使用的模型如下。这个想法是一种酒瓶企业资源规划(ERP),它使用户在酒窖(葡萄酒酿造者)中大量使用。 一个瓶子有4个外键:1个用户,1个葡萄酒和两个动作,它们定义了瓶子的位置和是否被评级(=喝醉)
^{pr2}$瓶子的自定义保存方法如下。当我试图在Django restapi中创建一个新瓶子时,会出现错误
这个save函数的特殊性是创建一个Movement对象,其中瓶子有一个ForeignKey和save函数的user和wine参数
def save(self, wine, user, force_insert=True, *args, **kwargs):
d = datetime.now()
self.wine = wine #wine referencing issue
self.user = user
v = Container.objects.get(container_type='vinibar', user=user)
c = Container.objects.get(container_type='cellar', user=admin)
m = Movement(date=d, start=c, finish=v) #quantity=quantity?
self.mounted = m
self.date_mounted = d
super(Bottle, self).save(*args, **kwargs)
我不明白这个错误指的是哪个论点,我已经尽我所能。。在
提前感谢您的帮助:)
我注意到您的挂载变量在分配给自行安装在
修复它有帮助吗?在
您的}:
save()
方法至少需要三个参数:self
、wine
和{这意味着,当
^{pr2}$kwargs
只包含一个值时,Django REST framework无法按如下方式调用save()
:您需要将
save()
的签名更改为:然后,您可以从}获得
args
和{wine
、user
和其他参数的值(如果它们恰好是由Django REST框架传递的)。在相关问题 更多 >
编程相关推荐