回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我对Django中模型的自定义保存方法有一个问题。
返回的错误是:</p>
<pre><code> 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)
</code></pre>
<p>这里使用的模型如下。这个想法是一种酒瓶企业资源规划(ERP),它使用户在酒窖(葡萄酒酿造者)中大量使用。
一个瓶子有4个外键:1个用户,1个葡萄酒和两个动作,它们定义了瓶子的位置和是否被评级(=喝醉)</p>
^{pr2}$
<p>瓶子的自定义保存方法如下。当我试图在Django restapi中创建一个新瓶子时,会出现错误</p>
<p>这个save函数的特殊性是创建一个Movement对象,其中瓶子有一个ForeignKey和save函数的user和wine参数</p>
<pre><code>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)
</code></pre>
<p>我不明白这个错误指的是哪个论点,我已经尽我所能。。在</p>
<p>提前感谢您的帮助:)</p>